解码JSON时的PHP问题
我有以下数据:解码JSON时的PHP问题,php,json,Php,Json,我有以下数据: Array ( [id] => 19936953 [name] => Zackaze [profileIconId] => 585 [summonerLevel] => 30 [revisionDate] => 1394975422000 ) $str = json_decode($data,true); $row = (object) $str; echo $row['name']; 我尝试了这段代码
Array
(
[id] => 19936953
[name] => Zackaze
[profileIconId] => 585
[summonerLevel] => 30
[revisionDate] => 1394975422000
)
$str = json_decode($data,true);
$row = (object) $str;
echo $row['name'];
我尝试了这段代码,但它经常出现以下错误:
致命错误:无法将stdClass类型的对象用作数组
希望您能帮助我。您已经将json解码为关联数组,因为您使用true作为第二个参数,因此可以直接使用作用域打印它。如果您需要作为对象进行解码,只需删除第二个参数,我认为您需要以另一种方式访问它
$str = json_decode($data,true);
echo $str['name'];
json_decode的第二个参数将对象转换为关联数组。只需删除第二个参数或将其更改为false,它将返回stdClass而不是关联数组
您可以看到。而不需要转换为对象(正如其他人所提到的),这不是错误的原因。无法使用
$array['key']
符号访问对象属性。您必须使用$object->property
或者,您可以删除$row=(object)$str代码>行,然后可以作为数组访问$row
尝试像这样输出
$str = json_decode($data,true);
$str = array
(
'id' => 19936953,
'name' => Zackaze,
'profileIconId' => 585,
'summonerLevel' => 30,
'revisionDate' => 1394975422000
);
$row = (object) $str;
echo $row->name;
还是更干净的方式
$str = json_decode($data);
echo $str->name;
如果您尝试echo$str['name']代码>?非常清楚的错误消息。您可以强制转换为(对象)
,但随后使用$row['name']
将其视为一个数组。使用print\r
查看您的$row
,看看它是一个对象还是一个数组。您可以显式地告诉json\u encode()
返回一个数组,然后强制转换为对象,然后作为数组访问。即使这是你在其他地方找到的代码,你也应该试着理解它的作用代码>