Start · Sprachen · PHP · Referenz · json_decode

json_decode

Funktion

Parst einen JSON-String zu einer PHP-Datenstruktur — als Objekt (Standard) oder assoziatives Array.

seit PHP 5.2.0 Kategorie: json

Signatur

json_decode(string $json, ?bool $associative = null, int $depth = 512, int $flags = 0): mixed

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

Typ
mixed
Beschreibung
Der geparste Wert. Bei Fehler ohne 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
Ben

Als Objekt (default)

<?php

$json = '{"user":"Ben","alter":32}';
$obj = json_decode($json, flags: JSON_THROW_ON_ERROR);

echo $obj->user; // Ben
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.

Siehe auch