JSON Decode致命错误:无法使用stdClass类型的对象作为数组

时间:2014-05-28 20:58:57

标签: php json

我有JSON格式的状态列表,我正在使用json_decode函数但是当我试图访问数组值时出错。

$states='{
    "AL": "Alabama",
    "AK": "Alaska",
    "AS": "American Samoa",
    "AZ": "Arizona",
    "AR": "Arkansas"

}';

$stateList = json_decode($states);
echo $stateList['AL'];

致命错误:不能在第65行使用stdClass类型的对象作为数组

4 个答案:

答案 0 :(得分:3)

你知道,json_decode()方法不会将我们的JSON作为PHP数组返回;它使用stdClass 对象来表示我们的数据。我们改为将对象键作为对象属性访问。

echo $stateList->AL;

如果你提供true作为函数的第二个参数,我们将完全接收我们的PHP数组 如预期的那样。

$stateList = json_decode($states,true);
echo $stateList['AL'];

答案 1 :(得分:3)

你将true传递给json_decode,就像南河所说:

$stateList = json_decode($states, true);

或更改您访问它的方式:

echo $stateList->{'AL'};

答案 2 :(得分:0)

您可以将true作为第二个参数传递给json_encode,或者将类显式转换为数组。我希望有所帮助。

答案 3 :(得分:0)

 $stateList = json_decode($states);
 //statelist is a object so you can not access it as array
 echo $stateList->AL;

如果要在解码后得到结果数组:

  $stateList = json_decode($states, true);
 //statelist is an array so you can not access it as array
 echo $stateList['AL'];