Du bist hier: Tips » Scripte » PHP
PHP
Referenzliste

json_decode

JSON-Funktionen

    Befehl:
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 ]] )


    Parameter-Liste:
NameBeschreibung
jsonDer zu dekodierende json-String.
assocWenn TRUE, werden zurückgegebene Objekte in assoziative Arrays konvertiert.
depthBenutzerspezifische Verschachtelungstiefe.

    Beschreibung:
Konvertiert eine JSON-kodierte Zeichenkette in eine PHP-Variable.


    Aktiv in Version:
(PHP 5 >= 5.2.0, PHP 7, PECL json >= 1.2.0)

    Hinweis:
Hinweis:

Die JSON-Spezifikation ist nicht JavaScript, aber ein Subset davon.

Tritt ein Dekodierungsfehler auf, kann json_last_error() verwendet werden, um die exakte Natur des Fehlers zu ermitteln.


    Siehe auch:
Gibt die JSON-Repräsentation eines Wertes zurück
 
Gibt den letzten aufgetretenen Fehler zurück
 

json_decode() - Beispiel:


Eingabe:
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>


Ausgabe:
object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

Beschreibung:
Version Beschreibung
5.3.0 Der optionale Parameter depth wurde hinzugefügt. Die Standardrekursionstiefe wurde von 128 auf 512 heraufgesetzt.
5.2.3 Die Verschachtelungsgrenze wurde von 20 auf 128 angehoben.
json_decode() - Beispiel 2:


Eingabe:
<?php
$json = '{"foo-bar": 12345}';

$obj = json_decode($json);
print $obj->{'foo-bar'}; // 12345
?>


Beschreibung:
Version Beschreibung
5.3.0 Der optionale Parameter depth wurde hinzugefügt. Die Standardrekursionstiefe wurde von 128 auf 512 heraufgesetzt.
5.2.3 Die Verschachtelungsgrenze wurde von 20 auf 128 angehoben.
json_decode() - Beispiel 3: H�ufige Fehler bei der Verwendung von json_decode()


Eingabe:
<?php
// die folgenden Zeichenketten sind gültiges JavaScript aber kein gültiges JSON

// der Name und der Wert müssen in doppelten Anführungszeichen eingeschlossen werden
// einfache Anführungszeichen sind ungültig
$bad_json = "{ 'bar': 'baz' }";
json_decode($bad_json); // null

// der Name muss in doppelten Anführungszeichen eingeschlossen werden
$bad_json = '{ bar: "baz" }';
json_decode($bad_json); // null

// nachfolgende Kommata sind nicht erlaubt
$bad_json = '{ bar: "baz", }';
json_decode($bad_json); // null
?>


Beschreibung:
Version Beschreibung
5.3.0 Der optionale Parameter depth wurde hinzugefügt. Die Standardrekursionstiefe wurde von 128 auf 512 heraufgesetzt.
5.2.3 Die Verschachtelungsgrenze wurde von 20 auf 128 angehoben.
json_decode() - Beispiel 4: Fehler bei der Verwendung von depth


Eingabe:
<?php
// Daten kodieren
$json = json_encode(
    array(
        1 => array(
            'englisch' => array(
                'One',
                'January'
            ),
            'französisch' => array(
                'Une',
                'Janvier'
            )
        )
    )
);

// Errordefinitionen
$json_errors = array(
    JSON_ERROR_NONE => 'Es ist kein Fehler aufgetreten',
    JSON_ERROR_DEPTH => 'Die maximale Stacktiefe wurde erreicht',
    JSON_ERROR_CTRL_CHAR => 'Steuerzeichenfehler, möglicherweise fehlerhaft kodiert',
    JSON_ERROR_SYNTAX => 'Syntaxfehler',
);

// Zeige die Fehler für unterschiedliche Verschachtelungstiefen
foreach(range(4, 3, -1) as $depth) {
    var_dump(json_decode($json, true, $depth));
    echo 'Letzter Fehler : ', $json_errors[json_last_error()], PHP_EOL, PHP_EOL;
?>


Ausgabe:
array(1) {
  [1]=>
  array(2) {
    ["English"]=>
    array(2) {
      [0]=>
      string(3) "One"
      [1]=>
      string(7) "January"
    }
    ["French"]=>
    array(2) {
      [0]=>
      string(3) "Une"
      [1]=>
      string(7) "Janvier"
    }
  }
}
Letzter Fehler : Es ist kein Fehler aufgetreten

NULL
Letzter Fehler : Die maximale Stacktiefe wurde erreicht

Beschreibung:
Version Beschreibung
5.3.0 Der optionale Parameter depth wurde hinzugefügt. Die Standardrekursionstiefe wurde von 128 auf 512 heraufgesetzt.
5.2.3 Die Verschachtelungsgrenze wurde von 20 auf 128 angehoben.
JSON-Funktionen