JSON in ein PHP-Array umwandeln — und zurück
Wandeln Sie JSON in PHP-Array-Code oder ein PHP-Array in JSON um — mit den Anführungszeichen-, Escape- und Schlüsselregeln von PHP
Ihre Daten bleiben bei Ihnen. Die Umwandlung läuft im Browser; nichts wird an einen Server gesendet.
Hat dieses Werkzeug geholfen?
Danke, Ihre Rückmeldung ist angekommen.
So funktioniert es
Wer eine API-Antwort oder eine Konfigurationsdatei als festes Array in PHP-Code übernehmen will, muss das JSON sonst von Hand umschreiben: Aus geschweiften Klammern werden eckige, aus jedem Doppelpunkt ein "=>", und jeder Text braucht die Anführungszeichenregeln von PHP. Fügen Sie das JSON links ein; rechts erscheint Code, der mit "<?php" beginnt und sich direkt speichern und per include laden lässt. Im Beispiel wird das Objekt "adresse" zu einem verschachtelten Array mit Schlüsseln, die Liste "schlagwoerter" zu einem Array ohne Schlüssel; die einfachen Anführungszeichen in "'handgemacht'" werden maskiert, und der Hinweis mit Zeilenumbruch steht in doppelten Anführungszeichen, damit "\n" als Zeilenumbruch gilt. Lassen Sie den Variablennamen leer, entsteht return [...]; – so erwarten es die Konfigurationsdateien von Laravel und Symfony. Umgekehrt fügen Sie ein PHP-Array ein (gern mit $daten = oder return davor): Das Ergebnis entspricht der Ausgabe von json_encode mit JSON_PRETTY_PRINT, nur Umlaute bleiben lesbar statt als \u00fc maskiert.
Dieses Werkzeug ist auch als json in php array, json in php array umwandeln, php array in json umwandeln, json to php array, php array to json, json_decode array bekannt.
Was ist PHP-Array?
Das PHP-Array ist die universelle Datenstruktur von PHP: eine geordnete Folge von Schlüssel-Wert-Paaren. Dieselbe Struktur trägt eine einfache Liste wie 'Apfel', 'Birne' und einen Datensatz mit benannten Feldern wie 'ort' => 'Nürnberg'. Schlüssel sind Ganzzahlen oder Texte, Werte Texte, Zahlen, true/false, null oder weitere Arrays. Getrennte Listen- und Objekttypen wie in JSON gibt es nicht; beim Umwandeln entscheidet die Reihenfolge der Schlüssel.
Was ist json_encode und json_decode?
json_encode macht aus einem PHP-Wert JSON-Text, json_decode aus JSON-Text wieder einen PHP-Wert; beide sind in PHP eingebaut. Standardmäßig liefert json_decode JSON-Objekte als stdClass-Objekte; mit true als zweitem Argument erhalten Sie verschachtelte Arrays wie auf dieser Seite. json_encode maskiert ohne Optionen Umlaute als \u-Folge und Schrägstriche als \/; JSON_UNESCAPED_UNICODE und JSON_UNESCAPED_SLASHES schalten das ab.
Was ist der Unterschied zwischen JSON und einem PHP-Array?
JSON ist ein Textformat für den Datenaustausch zwischen Programmiersprachen: Schlüssel stehen immer in doppelten Anführungszeichen, abschließende Kommas, Kommentare und einfache Anführungszeichen sind verboten. Ein PHP-Array ist Teil des PHP-Quelltexts: einfache Anführungszeichen, Ganzzahl-Schlüssel, abschließende Kommas und Kommentare sind erlaubt, lesen kann es aber nur PHP. Für Daten an ein anderes Programm, einen Browser oder eine API nehmen Sie JSON; für feste Konfiguration oder Testdaten im PHP-Projekt ein PHP-Array.
Was sich ändert, wenn ein PHP-Array zu JSON wird
PHP kennt nur einen Array-Typ, der zugleich geordnete Liste und Schlüssel-Wert-Tabelle ist. JSON trennt beides: Arrays in eckigen und Objekte in geschweiften Klammern. Diese Seite wendet dieselbe Regel wie json_encode an: Laufen die Schlüssel lückenlos 0, 1, 2 … in Reihenfolge, entsteht ein JSON-Array; weicht auch nur ein Schlüssel ab, ein JSON-Objekt. [3 => 'x', 1 => 'y'] wird daher zu {"3": "x", "1": "y"}, und ein leeres Array ist immer [], nie {}.
Auch Schlüssel werden nach den Umwandlungsregeln von PHP gelesen. Ein Text wie '7', der wie eine Ganzzahl aussieht, wird zur Zahl 7, '07' bleibt Text; der Schlüssel true wird zu 1, null zu einem leeren Text. Steht derselbe Schlüssel zweimal da, gewinnt wie in PHP der letzte Wert und behält die erste Position; die Statuszeile nennt die Zahl der doppelten Schlüssel. Ein Element ohne Schlüssel erhält den bis dahin größten ganzzahligen Schlüssel plus eins.
- ['a', 'b'] → ["a", "b"] (fortlaufende Liste bleibt JSON-Array)
- [1 => 'a', 2 => 'b'] → {"1": "a", "2": "b"} (beginnt nicht bei 0)
- ['7' => 'x'] → Schlüssel wird zur Zahl 7; '07' bleibt Text
- 1.0 → 1.0 (float bleibt), 0x1A → 26, 1_000 → 1000
Was sich nicht umwandeln lässt: Konstanten, Funktionen, Variablen im Text
Das Werkzeug führt keinen PHP-Code aus, es liest nur feste Werte: Texte in einfachen und doppelten Anführungszeichen, Ganzzahlen, Kommazahlen, true, false, null und verschachtelte Arrays. Konstanten wie PHP_EOL oder __DIR__, Aufrufe wie date(), Verkettungen wie 'a' . 'b' und Texte mit Variable in doppelten Anführungszeichen ("Hallo $name") bekommen ihren Wert erst zur Laufzeit. Statt zu raten, hält das Werkzeug mit Zeilen- und Spaltenangabe an. Tragen Sie den Wert dann von Hand ein oder führen Sie in PHP echo json_encode($array); aus.
In der Gegenrichtung ist bei großen Ganzzahlen Vorsicht geboten. Eine JSON-Zahl wie 12345678901234567890 liegt über der 64-Bit-Grenze von PHP (9223372036854775807); beim Einlesen macht PHP daraus einen float, die letzten Stellen werden gerundet. Lange Nummern, mit denen nicht gerechnet wird – Kundennummern, IBAN-Teile, EAN-Codes –, gehören im JSON deshalb in Anführungszeichen.
Häufige Fragen
Wie wandle ich JSON in ein PHP-Array um?
Fügen Sie das JSON links auf dieser Seite ein; rechts erscheint PHP-Code in der Form $daten = [...];. Zur Laufzeit im eigenen Code verwenden Sie json_decode($json, true); ohne true als zweites Argument liefert PHP ein stdClass-Objekt statt eines Arrays.
Wie wandle ich ein PHP-Array in JSON um?
Fügen Sie das Array samt Zeile $daten = [...]; oder return [...]; links ein; die Richtung wechselt selbst auf PHP → JSON. Das Ergebnis entspricht json_encode($daten, JSON_PRETTY_PRINT), nur Umlaute und ß bleiben lesbar statt als \u-Folge (wie mit der Option JSON_UNESCAPED_UNICODE).
Gibt es einen Unterschied zwischen [ ] und array( )?
Nein, beide erzeugen dasselbe Array. Die kurze Schreibweise mit eckigen Klammern gibt es seit PHP 5.4 (2012), aktuelle Coding-Standards verwenden sie. Wählen Sie array( ) nur, wenn der Code noch unter PHP 5.3 oder älter laufen muss.
Warum stehen manche Texte in einfachen, andere in doppelten Anführungszeichen?
In einfachen Anführungszeichen lässt PHP \n und $ unverändert; deshalb sind sie Standard, und nur Backslash und einfaches Anführungszeichen werden maskiert. Enthält ein Text ein unsichtbares Zeichen wie Zeilenumbruch oder Tabulator, werden doppelte Anführungszeichen verwendet, denn nur dort bedeutet \n einen Zeilenumbruch; das $-Zeichen wird dann als \$ geschrieben, damit PHP es nicht für eine Variable hält.
Werden meine Daten an einen Server gesendet?
Nein. Lesen, Umwandeln und das Vorbereiten des Downloads geschehen vollständig in Ihrem Browser; selbst ein Konfigurations-Array mit Datenbankpasswort oder API-Schlüssel verlässt diese Seite nicht.