Funcții JSON
PHP Manual

json_decode

(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

json_decodeConvertește într-o variabilă un șir reprezentat JSON

Descrierea

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

Preia un șir de caractere reprezentat JSON și îl convertește într-o variabilă PHP.

Parametri

json

Șirul (string) reprezentat json care trebuie convertit.

Această funcție operează doar cu date codificate în UTF-8.

assoc

Dacă specificați TRUE, obiectul va fi convertit într-un array asociativ.

depth

Limita adâncimii de imbricare specificată de utilizator.

options

Masca de biți a opțiunilor de decodificare JSON. în prezent este susținută doar JSON_BIGINT_AS_STRING (în mod implicit numerele întregi mari se transformă în numere cu virgulă flotantă)

Această modificare există în versiunea de dezvoltare a PHP și probabil va exista după 5.3.

Valorile întoarse

Întoarce valoarea codificată în json cu tipul PHP corespunzător. Valorile true, false și null (indiferent de tipul caracterelor - minuscule sau majuscule) sunt întoarse ca TRUE, FALSE și NULL respectiv. NULL este întors dacă parametrul json nu poate fi decodificat sau dacă datele pentru codificare sunt mai adânci decât limita de imbricare.

Exemple

Example #1 json_decode() exemplu

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

var_dump(json_decode($json));
var_dump(json_decode($jsontrue));

?>

Exemplul de mai sus va afișa:

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)
}

Example #2 Un alt exemplu

<?php

$json 
'{"foo-bar": 12345}';

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

?>

Example #3 greșeli comune la utilizarea json_decode()

<?php

// următoarele stringuri sunt JavaScript valid, dar nu și JSON valid

// denumirea și valoarea trebuie incluse între ghilimele duble
// ghilimelele obișnuite nu sunt valide
$bad_json "{ 'bar': 'baz' }";
json_decode($bad_json); // null

// denumirea trebuie inclusă între ghilimele duble
$bad_json '{ bar: "baz" }';
json_decode($bad_json); // null

// virgula la sfârșit nu este permisă
$bad_json '{ bar: "baz", }';
json_decode($bad_json); // null

?>

Example #4 Erori ale depth

<?php
// Codifică datele.
$json json_encode(
    array(
        
=> array(
            
'English' => array(
                
'One',
                
'January'
            
),
            
'French' => array(
                
'Une',
                
'Janvier'
            
)
        )
    )
);

// Definește erorile.
$json_errors = array(
    
JSON_ERROR_NONE => 'No error has occurred',
    
JSON_ERROR_DEPTH => 'The maximum stack depth has been exceeded',
    
JSON_ERROR_CTRL_CHAR => 'Control character error, possibly incorrectly encoded',
    
JSON_ERROR_SYNTAX => 'Syntax error',
);

// Arată erorile pentru diferite adâncimi.
foreach(range(43, -1) as $depth) {
    
var_dump(json_decode($jsonTrue$depth));
    echo 
'Last error : '$json_errors[json_last_error()], PHP_EOLPHP_EOL;
    }
?>

Exemplul de mai sus va afișa:

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"
    }
  }
}
Last error : No error has occurred

NULL
Last error : The maximum stack depth has been exceeded

Example #5 json_decode() cu numere întregi mari

<?php
$json 
'12345678901234567890';

var_dump(json_decode($json));
var_dump(json_decode($jsonfalse512JSON_BIGINT_AS_STRING));

?>

Exemplul de mai sus va afișa:

float(1.2345678901235E+19)
string(20) "12345678901234567890"

Note

Notă:

Specificația JSON nu este JavaScript, ci un subset al JavaScript.

Notă:

În cazul decodificării cu eșec funcția json_last_error() poate fi utilizată pentru a determina natura exactă a erorii.

Istoria schimbărilor

Versiunea Descriere
Viitor A fost adăugat parametrul options.
5.3.0 A fost adăugat parametrul opțional depth. Limita de imbricare implicită a fost mărită de la 128 la 512.
5.2.3 Limita de imbricare a fost mărită de la 20 la 128.

Vedeți de asemenea


Funcții JSON
PHP Manual