我有下面的json数据并将其解码以显示在屏幕上。当我检查值的类型时,它显示的是数组而不是对象。如何在PHP中获取实际的值类型。
JSON是
List
当我解码并解析上述JSON数据时,“ allData”,“ contents”,“ box”类型将显示为数组而不是对象。我如何获得那些类型作为对象和“图像”类型作为数组。请帮忙。
谢谢, 上师
答案 0 :(得分:1)
通常在使用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));
只要尝试在json_decode函数中删除true,就应该得到一个对象。
希望这会有所帮助。
答案 1 :(得分:0)
如果您将json_decode与true选项一起使用,它将以数组形式返回结果。
也许您可以选中此link.
如果收到“无法将stdClass类型的对象用作数组”错误,则可以查看此answer.
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
答案 2 :(得分: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)
将结果作为Objects和arrays给您。因此,以您的示例为例:
“ allData”:{“ image”:[],..
返回类型为array的字段“ image”的stdClass-Object。对于您的示例,该数组为空。
因此,要检索所有图像,请使用类似以下内容的
:$result=json_decode($json);
foreach($result->allData->image as $img) {
echo "found image: $img.";
}