json解码的值类型显示为数组而不是对象

时间:2018-12-17 08:54:07

标签: php

我有下面的json数据并将其解码以显示在屏幕上。当我检查值的类型时,它显示的是数组而不是对象。如何在PHP中获取实际的值类型。

JSON是

List

当我解码并解析上述JSON数据时,“ allData”,“ contents”,“ box”类型将显示为数组而不是对象。我如何获得那些类型作为对象和“图像”类型作为数组。请帮忙。

谢谢, 上师

3 个答案:

答案 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.";
}