JSON解码致命错误:不能使用stdClass类型的对象作为数组
Posted
技术标签:
【中文标题】JSON解码致命错误:不能使用stdClass类型的对象作为数组【英文标题】:JSON Decode Fatal error: Cannot use object of type stdClass as array in 【发布时间】:2014-07-18 06:35:43 【问题描述】:我有 JSON 格式的状态列表,我正在使用 json_decode 函数,但是当我尝试访问数组值时出现错误。
$states='
"AL": "Alabama",
"AK": "Alaska",
"AS": "American Samoa",
"AZ": "Arizona",
"AR": "Arkansas"
';
$stateList = json_decode($states);
echo $stateList['AL'];
致命错误:第 65 行无法使用 stdClass 类型的对象作为数组
【问题讨论】:
你得到了一个通用对象。 us2.php.net/manual/en/function.json-decode.php 【参考方案1】:你看,json_decode() 方法不会将我们的 JSON 作为 PHP 数组返回;它使用一个 stdClass 对象来表示我们的数据。让我们将对象键作为对象属性访问。
echo $stateList->AL;
如果您提供 true 作为函数的第二个参数,我们将准确接收我们的 PHP 数组 正如预期的那样。
$stateList = json_decode($states,true);
echo $stateList['AL'];
【讨论】:
【参考方案2】:要么你把true
传给json_decode
,就像南河说的:
$stateList = json_decode($states, true);
或更改您访问它的方式:
echo $stateList->'AL';
【讨论】:
【参考方案3】:您可以将 true 作为第二个参数传递给 json_encode 或将类显式转换为数组。我希望这会有所帮助。
【讨论】:
【参考方案4】: $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'];
【讨论】:
以上是关于JSON解码致命错误:不能使用stdClass类型的对象作为数组的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:未捕获的错误:调用未定义的方法 stdClass::option();
WordPress:可捕获的致命错误:stdClass 类的对象无法转换为字符串
SQL 错误可捕获的致命错误:stdClass 类的对象无法转换为字符串