1 回答
TA贡献1859条经验 获得超6个赞
无效的 JSON
json_decode失败(无提示)并返回,null因为这不是有效的 JSON 文档。JSON 不允许在数组的最后一项或对象的最后列出的属性上使用逗号。你从哪里得到这个 JSON 文档?这是有效的 Javascript,但不是有效的 JSON。
违规行是:
{
"Artist": "Artist One",
"UUID": "364226",
"Image": "http://theurl.com", <-- remove this in the other objects too
},
和
}
]
}, <-- remove this
],
"nextPageToken": null
}
希望你拥有这个“外部 json 文件”并且可以编辑它,否则就没有办法解决它。用json linter检查你的 json 文件。
错误使用嵌套foreach循环
要得到你想要的东西(假设每个项目都是“艺术家”):
foreach($data["items"] as $item){
foreach($item["items"] as $artist){
echo $artist["Artist"];
echo $artist["UUID"];
echo $artist["Image"];
}
}
你不应该foreachJSON 对象的每个属性,只有那些是可迭代的。
附录
这是固定的 json 文件,删除了有问题的逗号:
{
"items": [
{
"title": null,
"itemType": "artist",
"moreTrackingTitle": "All Artists",
"items": [
{
"Artist": "Artist One",
"UUID": "364226",
"Image": "http://theurl.com"
},
{
"Artist": "Artist Two",
"UUID": "1513513",
"Image": "http://theurl.com"
},
{
"Artist": "Artist Three",
"UUID": "214141",
"Image": "http://theurl.com"
}
]
}
],
"nextPageToken": null
}
要强制 PHP 在读取无效的 JSON 字符串时抛出异常而不是返回 null,请将 JSON_THROW_ON_ERROR 作为第四个参数传递:
$data = json_decode(file_get_contents("data.json"), true, 512, JSON_THROW_ON_ERROR);
- 1 回答
- 0 关注
- 130 浏览
添加回答
举报