Signatur
Beschreibung
json_decode() ist das Gegenstück zu json_encode(). Es wandelt einen JSON-String zurück in PHP-Daten.
Standardmäßig werden JSON-Objekte als stdClass-Instanzen zurückgegeben. Setze den zweiten Parameter $associative auf true, um stattdessen ein assoziatives Array zu erhalten — meistens das, was du willst.
Ohne JSON_THROW_ON_ERROR gibt die Funktion bei fehlerhaftem JSON still null zurück, was zu subtilen Bugs führt. Immer den Flag setzen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $json Pflicht | string | — | Der zu parsende JSON-String. |
| $associative | ?bool | null | true: Objekte als assoziatives Array. false oder null: als stdClass. |
| $depth | int | 512 | Maximale Verschachtelungstiefe. |
| $flags | int | 0 | Bitmaske. Empfohlen: JSON_THROW_ON_ERROR. Auch nützlich: JSON_BIGINT_AS_STRING für sehr große Zahlen. |
Rückgabewert
JSON_THROW_ON_ERROR: null.Beispiele
Als assoziatives Array parsen
<?php
$json = '{"user":"Ben","alter":32}';
$data = json_decode($json, associative: true, flags: JSON_THROW_ON_ERROR);
echo $data['user']; // Ben
Als Objekt (default)
<?php
$json = '{"user":"Ben","alter":32}';
$obj = json_decode($json, flags: JSON_THROW_ON_ERROR);
echo $obj->user; // Ben
// Wichtig · Fallstricke
Bei Zahlen > PHP_INT_MAX gehen Präzisionen verloren — nutze JSON_BIGINT_AS_STRING, um sie als String zu erhalten. Wichtig z. B. bei Bitcoin-Satoshi oder Twitter/X-User-IDs.