Функция json_decode
без параметров автоматически декодирует JSON в тот формат, который считает предпочтительным.
Так например json строка true
будет преобразована в значение true
типа boolean.
Строки false
и null
также переведутся в соответствующие типы.
С массивами все немного сложнее: если массив с числовыми ключами идущими по порядку загодировать через функцию json_encode
, а затем декодировать через json_decode
- результат будет массивом.
Если же преобразуется ассоциативный массив или в случае, когда числовые ключи идут не по порядку, при декодировании станет экземпляром класса stdObject
.
Как вместо объекта, получить обычный ассоциативный массив?
Преобразовать результат json_decode
в массив достаточно просто — нужно передать вторым параметром true, вот так:
json_decode($json_string, true);
Вот полный код примера:
$array = array( 'one' => 1, 'two' => 2, ); $json = json_encode($array); echo $json; // {"one":1,"two":2} $result = json_decode($json, true); var_dump($result); //array (size=2) // 'one' => int 1 // 'two' => int 2
Подробную документацию можно найти здесь: json_decode
Обязательно прочитайте — у этой функции есть 4 параметра. Послдение 2 используются редко, но они могут пригодиться.
Сигнатура функции:
json_decode( string $json, bool|null $associative = null, int $depth = 512, int $flags = 0 ): mixed