json_decode PHP

Содержание
Введение
Простейший JSON
JSON с одним вложением
JSON с массивом
Реальный пример работы с API
Похожие статьи

Введение

Попробуем разобраться с обработкой JSON средствами PHP

Простейший JSON

Предположим, что у нас есть следующий JSON

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'

Cделаем json_decode() без дополнительных параметров

var_dump(json_decode($json));

object(stdClass)#4 (5) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) ["d"]=> int(4) ["e"]=> int(5) }

В этом случае json_decode() возвращает object

Теперь выполним json_decode() с аргументом true

var_dump(json_decode($json, true));

array(5) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) ["d"]=> int(4) ["e"]=> int(5) }

Теперь мы получили array

Зафиксируем, что в первом случае (без аргументов) var_dump возвращает объект а во втором (с аргументом true) массив

Подробнее о том как выводить содержимое массива читайте здесь

$json_decode = json_decode($json); $json_decode_true = json_decode($json,true); $arraydata = implode(',' , $json_decode_true); echo $arraydata;

1,2,3,4,5

Попробуем вытащить из массива отдельные элементы

echo $json_decode_true["a"]; echo'<br>; echo $json_decode_true["b"];

1
4

JSON с вложением

Усложним задачу. Пусть теперь JSON содержит вложения второго уровня.

$json2 = ' { "a": {"a_item_1": 11, "a_item_2": 12, "a_item_3": 13}, "b": 2, "c": 3, "d": {"d_item_1": 41, "d_item_2": 42, "d_item_3": 43}, "e": 5 }' ;

Попробуем достать один из вложенных элементов.

Обычные элементы (b, c, e) можно вывести на экран с помощью echo для элементом, которые сами также являются массивами (a, d) нужно использовать, например, implode(), подробности здесь

$json_decode_true2 = json_decode($json2, true); echo $json_decode_true2["c"]; echo'<br>; $d = $json_decode_true2["d"]; $dvalue = implode( , $d); echo $dvalue; echo'<br>; echo $json_decode_true2["d"]["d_item_2"];

3
41,42,43
42

Как Вы можете видеть, обычные элементы по-прежнему доступны. Новые элементы возвращают Array если обратиться к верхнему уровню, либо значение, если обратиться к элементу массива.

JSON с массивом

Массивы заключены в квадратные скобки. Предположим, что он довольно простой.

{ "a": [{ "a_item_1": 11, "a_item_2": 12, "a_item_3": 13 }, { "a_item_4": 14, "a_item_5": 15, "a_item_6": 16 } ], "b": 2, "c": 3, "d": { "d_item_1": 41, "d_item_2": 42, "d_item_3": 43 }, "e": 5 }

Чтобы обратиться к элементу массива нужно сперва указать его индекс в квадратных скобках.

Достанем элементы a_item_3 и a_item_6 , обратите внимание на то, что они находятся в разных частях вложенного массива a

Ожидаем получить 13 и 16

$json_decode_true3 = json_decode($json3, true); echo $json_decode_true3["a"][0]["a_item_3"]; echo <br>; echo $json_decode_true3["a"][1]["a_item_6"];

13
16

Реальный пример

Пример работы с реальным API вы можете изучить в статье «Обработка ответа реального запроса к API»