我正在尝试使用foreach()
循环访问JSON字符串。但是我一直收到以下错误:
"Notice: Trying to get property of non-object".
奇怪的是,当我复制并粘贴JSON字符串然后运行foreach()
时,它运行正常。为了提供一些细节,我使用的是Best-Buy API。
由于这似乎适用于所有人here,因此最好购买的数据可能有问题吗?
请帮助,我已经尝试了一切!
更新抱歉没有发布代码。这是:
$info = json_decode($test, true);
function tagGen($info){
foreach($info as $key => $value){
}
答案 0 :(得分:1)
由于你还没有发布代码所以我们可以认为你有一个字符串jason编码。亲爱的json编码字符串是某种形式的javascript形式。并且foreach是一个php循环。因此,如果你有一个json编码的字符串,并且你想在foreach循环中使用它,你必须使用json_decode函数。
当您申请json_decode时,您将获得一个字符串来自documentation
以适当的PHP类型返回json中编码的值。
值true,false和null(不区分大小写)分别返回为TRUE,FALSE和NULL。
如果无法解码json或者编码数据的深度超过递归限制,则返回NULL。
对于一些示例代码。
$str=json_decode($yourjson);
foreach($str as $key=>$value)
{}
答案 1 :(得分:0)
您可能没有在JSON字符串上使用json_decode。看看我将如何做到这一点:
$json = "somejsonstring";
$json_array = json_decode($json, true);
foreach($json_array as $element) {
echo $element['some key'];
}
注意给json_decode方法的“true”第二个参数。返回一个关联数组而不是标准PHP对象。使用foreach循环更容易。
希望有所帮助,尽管您的问题应该包含代码示例。
答案 2 :(得分:0)
将json字符串打印到可以复制它的位置,然后使用此工具检查它是否有效:http://jsonformatter.curiousconcept.com/