Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
 
 
 

PHP json_encode: Daten in JSON umwandeln

Sie befinden sich: Home > Php Tutorial > PHP json_encode: Daten in J...

PHP json_encode: Daten in JSON umwandeln


Eintrag am:  12.04.2026
Hits / Besucher:  25
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

JSON ist heute das Standardformat für den Datenaustausch im Web. Ob REST-APIs, Konfigurationsdateien oder die Kommunikation zwischen Frontend und Backend: überall kommt JSON zum Einsatz. PHP bietet mit json_encode() eine leistungsfähige Funktion, um PHP-Datenstrukturen in JSON-Strings umzuwandeln. In diesem Tutorial lernst du die Syntax, die wichtigsten Optionen und die Fehlerbehandlung rund um json_encode(). Außerdem wird json_decode() als Gegenstück vorgestellt, um JSON-Strings wieder in PHP-Werte zurückzuverwandeln.

Illustration zum Tutorial: PHP json_encode: Daten in JSON umwandeln

Bevor es um die PHP-Funktion selbst geht, wird kurz erklärt, was JSON eigentlich ist und warum sich das Format als Standard durchgesetzt hat.

Was ist JSON?

JSON steht für JavaScript Object Notation und ist ein leichtgewichtiges Textformat zur Darstellung strukturierter Daten. Trotz des Namens ist JSON sprachunabhängig und wird in nahezu allen Programmiersprachen unterstützt. JSON kennt einfache Datentypen wie Strings, Zahlen, Booleans und null sowie zusammengesetzte Typen wie Objekte (Schlüssel-Wert-Paare in geschweiften Klammern) und Arrays (geordnete Listen in eckigen Klammern). Durch seine Einfachheit und gute Lesbarkeit hat JSON das früher verbreitete XML in vielen Bereichen abgelöst.

Syntax und Grundlagen von json_encode

Die Funktion json_encode() nimmt einen PHP-Wert entgegen und gibt den entsprechenden JSON-String zurück. Als optionalen zweiten Parameter akzeptiert sie Flags, die das Verhalten steuern. Ein dritter Parameter legt die maximale Verschachtelungstiefe fest.

Das folgende Diagramm zeigt den typischen Ablauf bei der Arbeit mit JSON in PHP.

flowchart TD
    A[PHP-Array] -->|json_encode| B[JSON]
    B -->|Speichern| C[DB / API / Datei]
    C -->|Empfangen| D[JSON]
    D -->|json_decode| E[PHP-Array]

Der Kreislauf beginnt mit einer PHP-Datenstruktur, die per json_encode() in einen JSON-String umgewandelt wird. Dieser String kann gespeichert, über eine API gesendet oder in einer Datei abgelegt werden. Beim Empfang wird der JSON-String mit json_decode() wieder in eine PHP-Datenstruktur umgewandelt.

Arrays und Objekte kodieren

PHP unterscheidet zwischen numerischen und assoziativen Arrays. Diese Unterscheidung wirkt sich direkt auf das erzeugte JSON aus.

Assoziative vs. numerische Arrays

Ein assoziatives Array wird von json_encode() als JSON-Objekt dargestellt, während ein numerisches Array als JSON-Array ausgegeben wird.

<?php

$daten = ['name' => 'Max', 'alter' => 28, 'stadt' => 'Berlin'];

$json = json_encode($daten);
echo $json;
/* {"name":"Max","alter":28,"stadt":"Berlin"} */

Hier erzeugt json_encode() ein JSON-Objekt mit Schlüssel-Wert-Paaren, weil das PHP-Array assoziative Schlüssel besitzt. Ein numerisches Array wie ['Apfel', 'Birne', 'Kirsche'] würde hingegen als JSON-Array ["Apfel","Birne","Kirsche"] ausgegeben. Diese automatische Erkennung ist in den meisten Fällen praktisch, kann aber mit der Option JSON_FORCE_OBJECT überschrieben werden.

PHP-Objekte als JSON

PHP-Objekte werden von json_encode() anhand ihrer öffentlichen Eigenschaften in JSON-Objekte umgewandelt. Private und geschützte Eigenschaften sind im JSON nicht enthalten. Wer die Ausgabe kontrollieren möchte, kann das Interface JsonSerializable implementieren und in der Methode jsonSerialize() festlegen, welche Daten im JSON erscheinen sollen.

Die wichtigsten json_encode-Optionen

PHP bietet zahlreiche Flags, um das Verhalten von json_encode() anzupassen. Diese Flags lassen sich mit dem Pipe-Operator (|) kombinieren.

JSON_PRETTY_PRINT

Das Flag JSON_PRETTY_PRINT formatiert die Ausgabe mit Einrückungen und Zeilenumbrüchen. Das ist besonders nützlich für die Entwicklung und das Debugging.

<?php

$produkte = [
['id' => 1, 'name' => 'Laptop', 'preis' => 999.99],
['id' => 2, 'name' => 'Maus', 'preis' => 29.90]
];

echo json_encode($produkte, JSON_PRETTY_PRINT);

Die Ausgabe enthält dann Einrückungen mit vier Leerzeichen pro Ebene. In Produktivumgebungen sollte auf JSON_PRETTY_PRINT verzichtet werden, da die zusätzlichen Leerzeichen und Zeilenumbrüche die Dateigröße unnötig erhöhen.

JSON_UNESCAPED_UNICODE

Standardmäßig escaped json_encode() Unicode-Zeichen in die Form uXXXX. Mit JSON_UNESCAPED_UNICODE bleiben die Zeichen in ihrer ursprünglichen UTF-8-Darstellung erhalten.

<?php

$text = ['nachricht' => 'Gruesse aus Muenchen'];

echo json_encode($text);
/* Umlaute werden escaped: {"nachricht":"Gr\u00fc\u00dfe aus M\u00fcnchen"} */

echo json_encode($text, JSON_UNESCAPED_UNICODE);
/* {"nachricht":"Gruesse aus Muenchen"} */

Wichtig ist, dass die Eingabedaten in UTF-8 kodiert sein müssen. Nicht-UTF-8-Strings führen dazu, dass json_encode() false zurückgibt und einen Fehler setzt.

JSON_FORCE_OBJECT

Das Flag JSON_FORCE_OBJECT erzwingt die Ausgabe als JSON-Objekt, selbst wenn das PHP-Array numerische Schlüssel hat. Aus ["Apfel","Birne"] wird dann {"0":"Apfel","1":"Birne"}. Das kann nützlich sein, wenn eine API zwingend ein Objekt erwartet.

JSON_NUMERIC_CHECK

Mit JSON_NUMERIC_CHECK werden numerische Strings automatisch als Zahlen kodiert. Dabei ist Vorsicht geboten: Postleitzahlen wie "01234" würden fälschlicherweise als Zahl 1234 interpretiert und verlieren dabei die führende Null. Dieses Flag sollte daher nur eingesetzt werden, wenn sichergestellt ist, dass keine numerischen Strings mit spezieller Bedeutung in den Daten vorkommen.

Fehlerbehandlung mit json_last_error

Die Funktion json_encode() gibt im Fehlerfall false zurück. Um die genaue Fehlerursache zu ermitteln, stehen die Funktionen json_last_error() und json_last_error_msg() zur Verfügung.

<?php

$ergebnis = json_encode($daten);

if ($ergebnis === false) {
echo 'JSON-Fehler: ' . json_last_error_msg();
}

Häufige Fehlerursachen sind nicht-UTF-8-kodierte Strings, zu tiefe Verschachtelungen oder nicht unterstützte Datentypen wie Ressourcen. Ab PHP 7.3 kann alternativ das Flag JSON_THROW_ON_ERROR verwendet werden. Damit wirft json_encode() bei einem Fehler eine JsonException, die sich mit einem try-catch-Block abfangen lässt. Das ist besonders in größeren Anwendungen praktisch, da Fehler so nicht übersehen werden können.

json_decode: JSON zurück in PHP

Das Gegenstück zu json_encode() ist json_decode(). Diese Funktion wandelt einen JSON-String in einen PHP-Wert um. Standardmäßig gibt json_decode() ein Objekt vom Typ stdClass zurück. Mit dem zweiten Parameter true wird stattdessen ein assoziatives Array erzeugt.

<?php

$json = '{"name":"Max","alter":28}';

$objekt = json_decode($json);
echo $objekt->name; /* Max */

$array = json_decode($json, true);
echo $array['name']; /* Max */

Beide Varianten haben ihre Berechtigung. Objekte eignen sich gut für den lesenden Zugriff, während assoziative Arrays flexibler sind, wenn die Daten weiterverarbeitet oder verändert werden sollen. Die Fehlerbehandlung funktioniert bei json_decode() genauso wie bei json_encode() mit json_last_error() und json_last_error_msg().

Fazit

Die Funktion json_encode() ist ein unverzichtbares Werkzeug in der PHP-Entwicklung. Sie wandelt PHP-Arrays und Objekte zuverlässig in JSON-Strings um, die sich speichern, übertragen und von anderen Systemen verarbeiten lassen. Mit den verschiedenen Flags wie JSON_PRETTY_PRINT, JSON_UNESCAPED_UNICODE und JSON_THROW_ON_ERROR lässt sich die Ausgabe präzise steuern. Zusammen mit json_decode() bildet json_encode() ein starkes Duo für die Arbeit mit JSON in PHP. Dabei sollte stets auf korrekte UTF-8-Kodierung geachtet und die Rückgabewerte auf Fehler geprüft werden.

 


Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.