Тип декодированного значения json отображается как массив вместо объекта

У меня есть ниже данные JSON и декодировать их для отображения на экране. Когда я проверяю тип значения, он показывает массив вместо объекта. Как получить фактический тип значения в PHP.

JSON это

{ "allData" : { "image" : [], "contents": {.., "box": {}, "text":[]} } }

Когда я декодирую и анализирую вышеупомянутые данные JSON, тип «allData», «contents», «box» отображается как массив вместо объекта. Как я могу получить эти типы в качестве объекта и типа «изображения» в виде массива. Пожалуйста помоги.

Спасибо,
Гуру

0

Решение

Это обычно происходит, когда вы используете true вариант в json_decode функция.

Например,

$str = '{"allData":{"image":["img1.png"],"contents":{"title":"title name","box":{"name":["sample text 1","sample text2"]},"text":[]}}}';
var_dump(json_decode($str, true));

Просто попробуйте удалить значение true в функции json_decode, и вы должны получить объект.

Надеюсь это поможет.

1

Другие решения

Если вы используете json_decode с параметром true, он вернет результат в виде массива.

Может быть, вы можете проверить это ссылка на сайт.

Если вы получаете сообщение «Не удается использовать объект типа stdClass как массив», вы можете посмотреть на это ответ.

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

var_dump(json_decode($json));
var_dump(json_decode($json, true));

?>
0

Выдержка из RFC 7159 (JSON):
Это шесть структурных символов:

  begin-array     = ws %x5B ws  ; [ left square bracket

begin-object    = ws %x7B ws  ; { left curly bracket

end-array       = ws %x5D ws  ; ] right square bracket

end-object      = ws %x7D ws  ; } right curly bracket

..

Однако: php позволяет обрабатывать результат как массив (массивов)

так:

json_decode($json, true); // return as array

возвращает результат в виде массива.

а также

json_decode($json)

дает вам результат в виде объектов и массивов. Итак, учитывая ваш пример:

«allData»: {«image»: [], ..

возвращает объект stdClass с полем «изображение» типа array. Массив пуст для вашего примера.

Таким образом, чтобы получить все изображения, используйте что-то вроде:

$result=json_decode($json);

foreach($result->allData->image as $img) {
echo "found image: $img.";
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector