У меня есть ниже данные JSON и декодировать их для отображения на экране. Когда я проверяю тип значения, он показывает массив вместо объекта. Как получить фактический тип значения в PHP.
JSON это
{ "allData" : { "image" : [], "contents": {.., "box": {}, "text":[]} } }
Когда я декодирую и анализирую вышеупомянутые данные JSON, тип «allData», «contents», «box» отображается как массив вместо объекта. Как я могу получить эти типы в качестве объекта и типа «изображения» в виде массива. Пожалуйста помоги.
Спасибо,
Гуру
Это обычно происходит, когда вы используете 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, и вы должны получить объект.
Надеюсь это поможет.
Если вы используете 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));
?>
Выдержка из 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.";
}