json_decode

(PHP 5 >= 5.2.0, PECL json:1.2.0-1.2.1)

json_decode — Decodes a JSON string

Описание

mixed json_decode ( string $json [, bool $assoc ] )

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

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

json

The json string being decoded.

assoc

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

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

Returns an object or if the optional assoc parameter is TRUE, an associative array is instead returned.

Примеры

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

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

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

?>

Примечания

Предостережение

This function will return false if the JSON encoded data is deeper than 127 elements.

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

Версия Описание
5.2.3 The nesting limit was increased from 20 to 128

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

Коментарии

Warning: As the section "return values" mentions, the return value NULL is ambiguos. To repeat, it can mean three things:

* The input string had the value "null"
* There was an error while parsing the input data
* The encoded data was deeper than the recursion limit

To distinguish these cases, json_last_error() can be used.
2020-11-11 15:18:17
http://php5.kiev.ua/manual/ru/function.json-decode.html
Автор:
Browsers don't choke on integers _starting_ with BigInt (64 bits), but before that (53 bits). The introduction of BigInt to modern browsers doesn't help much, when JSON handling functions do not support it. So I am trying to remedy that. My approach is to handle the decoded array before re-encoding it to a string:
<?php
function fix_large_int(&$value)
 {
  if (
is_int($value) && $value 9007199254740991)
   
$value strval($value);
 }
$json_str '{"id":[1234567890123456789,12345678901234567890]}';
$json_arr json_decode($json_strflagsJSON_BIGINT_AS_STRING JSON_OBJECT_AS_ARRAY);
echo(
json_encode($json_arr)); // {"id":[1234567890123456789,"12345678901234567890"]} (BigInt is already converted to a string here)
array_walk_recursive($json_arr'fix_large_int');
echo(
json_encode($json_arr)); // {"id":["1234567890123456789","12345678901234567890"]}
?>
2021-04-14 12:11:32
http://php5.kiev.ua/manual/ru/function.json-decode.html
JSON can be decoded to PHP arrays by using the $associative = true option. Be wary that associative arrays in PHP can be a "list" or "object" when converted to/from JSON, depending on the keys (of absence of them). 

You would expect that recoding and re-encoding will always yield the same JSON string, but take this example:

    $json = '{"0": "No", "1": "Yes"}';
    $array = json_decode($json, true);  // decode as associative hash
    print json_encode($array) . PHP_EOL;

This will output a different JSON string than the original:

    ["No","Yes"]

The object has turned into an array!

Similarly, a array that doesn't have consecutive zero based numerical indexes, will be encoded to a JSON object instead of a list.

    $array = [
        'first',
        'second',
        'third',
    ];
    print json_encode($array) . PHP_EOL;
    // remove the second element
    unset($array[1]);
    print json_encode($array) . PHP_EOL;

The output will be:

    ["first","second","third"]
    {"0":"first","2":"third"}

The array has turned into an object! 

In other words, decoding/encoding to/from PHP arrays is not always symmetrical, or might not always return what you expect!

On the other hand, decoding/encoding from/to stdClass objects (the default) is always symmetrical. 

Arrays may be somewhat easier to work with/transform than objects. But especially if you need to decode, and re-encode json, it might be prudent to decode to objects and not arrays. 

If you want to enforce an array to encode to a JSON list (all array keys will be discarded), use:

    json_encode(array_values($array));

If you want to enforce an array to encode to a JSON object, use:

    json_encode((object)$array);

See also: https://www.php.net/manual/en/function.array-is-list.php
2022-01-21 19:42:33
http://php5.kiev.ua/manual/ru/function.json-decode.html
To load an object with data in json format:
(bugfixed my previous comment)

<?php
function loadJSON($Obj$json)
{
   
$dcod json_decode($json);
   
$prop get_object_vars $dcod );
    foreach(
$prop as $key => $lock)
    {
        if(
property_exists $Obj $key ))
        {
            if(
is_object($dcod->$key))
            {
               
loadJSON($Obj->$keyjson_encode($dcod->$key));
            }
            else
            {
               
$Obj->$key $dcod->$key;
            }
        }
    }
    return 
$Obj;
}
?>

Tested with: 

<?php
class Name
{
  public 
$first;
  public 
$last;
  public function 
fullname()
  {
    return 
$this->first " " $this->last;
  }
}
$json '{"first":"John","last":"Smith"}';

$infull loadJSON((new Name), $json);
echo 
$infull->fullname();
2023-02-14 17:42:30
http://php5.kiev.ua/manual/ru/function.json-decode.html
The return value says "Returns the value encoded in json as an appropriate PHP type.", that seems to be the description for the json_encode.
2024-11-13 14:33:35
http://php5.kiev.ua/manual/ru/function.json-decode.html

    Поддержать сайт на родительском проекте КГБ