json_decode
Decodes a JSON string
&reftitle.description;
mixedjson_decode
stringjson
boolassocfalse
intdepth512
intoptions0
Takes a JSON encoded string and converts it into a PHP variable.
&reftitle.parameters;
json
The json string being decoded.
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)
&version.trunk.after.53;
&reftitle.returnvalues;
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.
&reftitle.examples;
json_decode examples
]]>
&example.outputs;
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)
}
]]>
Another example
{'foo-bar'}; // 12345
?>
]]>
common mistakes using json_decode
]]>
depth errors
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(4, 3, -1) as $depth) {
var_dump(json_decode($json, True, $depth));
echo 'Last error : ', $json_errors[json_last_error()], PHP_EOL, PHP_EOL;
}
?>
]]>
&example.outputs;
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
]]>
json_decode of large integers
]]>
&example.outputs;
&reftitle.notes;
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.
&reftitle.changelog;
&Version;
&Description;
&version.trunk.changelog;
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
&reftitle.seealso;
json_encode
json_last_error