循环通过JSON字符串

时间:2011-12-07 06:19:53

标签: php loops foreach json

我正在尝试使用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){
 }  

3 个答案:

答案 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/