Что нужно помнить, используя json в php

В этой статье я расскажу, с какими проблемами вы можете столкнуться при использовании json в php.

Рассмотрим два примера.

Пример 1. Обычный нумерованный массив.
$myArray = array('firstValue', 'secondValue');
$myArrayJsonEncoded = json_encode($myArray);
print_r(json_decode($myArrayJsonEncoded));
//Array ( [0] => firstValue [1] => secondValue )
Пример2. Ассоциативный массив.

$myAssotiativeArray = array(
    'firstKey' => 'firstValue',
    'secondKey' => 'secondValue'
);
 
$myAssotiativeArrayJsonEncoded = json_encode($myAssotiativeArray);
print_r(json_decode($myAssotiativeArrayJsonEncoded));
//stdClass Object ( [firstKey] => firstValue [secondKey] => secondValue )

Во 2м примере вместо ассоциативного массива нам возвращается объект! Дело в том, что в JavaScript понятие ассоциативного массива как такового нет. Обычные массивы могут иметь только числовые индексы, потому для эмуляции ассоциативных массивов, ключами которых могут быть в том числе и строковые значения, используются объекты. Поэтому на декодировании мы получили не массив, а объект класса stdClass.

В этом случае, в функцию json_decode можно передать второй параметр - true, тогда результат получим в виде массива:
$myAssotiativeArrayJsonEncoded = json_encode($myAssotiativeArray);
print_r(json_decode($myAssotiativeArrayJsonEncoded, true));
//Array ( [firstKey] => firstValue [secondKey] => secondValue )
Теги:
json
Добавлено: 03 Апреля 2018 18:44:37 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...