JSON Функции
PHP Manual

json_decode

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

json_decodeDecodes a JSON string

Описание

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

Takes a JSON encoded string and converts it into a PHP variable.

Список параметров

json

The json string being decoded.

This function only works with UTF-8 encoded data.

assoc

When TRUE, returned objects will be converted into associative arrays.

depth

User specified recursion depth.

options

Bitmask of JSON decode options. Currently only JSON_BIGINT_AS_STRING is supported (default is to cast large integers as floats)

Это изменение существует только в разрабатываемой версии PHP, и, возможно, будет существовать и после версии 5.3.

Возвращаемые значения

Returns the value encoded in json in appropriate PHP type. Values true, false and null (case-insensitive) are returned as TRUE, FALSE and NULL respectively. NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.

Примеры

Пример #1 json_decode() examples

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

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

?>

Результат выполнения данного примера:

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

Пример #2 Another example

<?php

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

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

?>

Пример #3 common mistakes using json_decode()

<?php

// the following strings are valid JavaScript but not valid JSON

// the name and value must be enclosed in double quotes
// single quotes are not valid 
$bad_json "{ 'bar': 'baz' }";
json_decode($bad_json); // null

// the name must be enclosed in double quotes
$bad_json '{ bar: "baz" }';
json_decode($bad_json); // null

// trailing commas are not allowed
$bad_json '{ bar: "baz", }';
json_decode($bad_json); // null

?>

Пример #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;
    }
?>

Результат выполнения данного примера:

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

Пример #5 json_decode() of large integers

<?php
$json 
'12345678901234567890';

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

?>

Результат выполнения данного примера:

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

Примечания

Замечание:

The JSON spec is not JavaScript, but a subset of JavaScript.

Замечание:

In the event of a failure to decode, json_last_error() can be used to determine the exact nature of the error.

Список изменений

Версия Описание
В будущем The options parameter was added.
5.3.0 Added the optional depth. The default recursion depth was increased from 128 to 512
5.2.3 The nesting limit was increased from 20 to 128

Смотрите также


JSON Функции
PHP Manual