(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_decode — Convertește într-o variabilă un șir reprezentat JSON
Preia un șir de caractere reprezentat JSON și îl convertește într-o variabilă PHP.
Șirul (string) reprezentat json care trebuie convertit.
Această funcție operează doar cu date codificate în UTF-8.
Dacă specificați TRUE, obiectul va fi convertit într-un array asociativ.
Limita adâncimii de imbricare specificată de utilizator.
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.
Î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.
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($json, true));
?>
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(
1 => 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(4, 3, -1) as $depth) {
var_dump(json_decode($json, True, $depth));
echo 'Last error : ', $json_errors[json_last_error()], PHP_EOL, PHP_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($json, false, 512, JSON_BIGINT_AS_STRING));
?>
Exemplul de mai sus va afișa:
float(1.2345678901235E+19) string(20) "12345678901234567890"
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.
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. |