Funkcje JSON
PHP Manual

json_decode

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

json_decodeDekoduje łańcuch JSON

Opis

mixed json_decode ( string $json [, bool $asocjacyjnie = false [, int $poziom_zagłębienia = 512 ]] )

Konwertuje łańcuch JSON do zmiennej PHP.

Parametry

json

Dekodowany json string .

asocjacyjnie

Gdy jest ustawiony na TRUE, zwracane obiekty zostaną przekonwertowane do tablic asocjacyjnych.

poziom_zagłębienia

Limit zagnieżdżania danych określony przez użytkownika.

Zwracane wartości

Zwraca wartość zakodowaną w json w odpowiednim typie PHP. Wartości true, false i null (niezależnie od wielkości liter) są zwracane odpowiednio jako TRUE, FALSE i NULL. NULL jest zwracany jeśli parametr json nie może zostać odkodowany, lub jeżeli zakodowane dane znajdują się głębiej niż ustalony limit zagnieżdżania.

Przykłady

Przykład #1 Przykład json_decode()

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

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

?>

Powyższy przykład wyświetli:

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

Przykład #2 Inny przykład

<?php

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

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

?>

Przykład #3 common mistakes using json_decode()

<?php

// poniższe łańcucy są prawidłowe w JavaScript, ale nieprawidłowe w JSON

// nazwa i wartość musi być zawarta w podwójny cudzysłów
// pojedyńcze cudzysłowy nie są prawidłowe
$bad_json "{ 'bar': 'baz' }";
json_decode($bad_json); // null

// nazwa musi być zawarta w podwójny cudzysłów
$bad_json '{ bar: "baz" }';
json_decode($bad_json); // null

// przecinki na końcu nie są dozwolone
$bad_json '{ bar: "baz", }';
json_decode($bad_json); // null

?>

Przykład #4 depth errors

<?php
// Encode the data.
$json json_encode(
    array(
        
=> array(
            
'English' => array(
                
'One',
                
'January'
            
),
            
'French' => array(
                
'Une',
                
'Janvier'
            
)
        )
    )
);

// Define the errors.
$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',
);

// Show the errors for different depths.
foreach(range(43, -1) as $depth) {
    
var_dump(json_decode($jsonTrue$depth));
    echo 
'Last error : '$json_errors[json_last_error()], PHP_EOLPHP_EOL;
    }
?>

Powyższy przykład wyświetli:

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

Notatki

Informacja: Specyfikacja JSON nie jest taka sama jak w JavaScript, tylko jest podzbiorem JavaScript.

Informacja: W przypadku niepowodzenia dekodowania danych funkcja json_last_error() może zostać użyta do ścisłego ustalenia rodzaju błędu.

Rejestr zmian

Wersja Opis
5.3.0 Dodano opcjonalny parametr poziom_zagłębienia. Domyślny limit zagnieżdżania danych został zwiększony z 128 do 512
5.2.3 Limit zagnieżdżania danych został zwiększony z 20 do 128

Zobacz też:


Funkcje JSON
PHP Manual