解码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()
返回一个数组,然后强制转换为对象,然后作为数组访问。即使这是你在其他地方找到的代码,你也应该试着理解它的作用