注意:尝试获取非对象的属性 - 也许是字符串?

时间:2014-07-26 07:33:40

标签: php json

我想获得“记录”的价值

何时尝试此代码:

$json = file_get_contents('URL');
var_dump($json);

结果如下:

string(25289) "{ "ProductsSummary": { "Records": 10, "TotalRecords": 2874, "TotalPages": 288, "CurrentPage": 1 }, "Products": [ { "...

当我尝试这段代码时

$json = file_get_contents('URL');
$obj = json_decode($json);

echo $obj;
echo $obj->{'ProductsSummary'}->{'Records'};
echo $obj->ProductsSummary->Records;
echo $obj[0]->ProductsSummary->Records;
echo $obj->ProductsSummary[0]->Records;
echo $obj->ProductsSummary[1];

输出是:

{ "ProductsSummary": { "Records": 10, "TotalRecords": 2879, "TotalPages": 288, "CurrentPage": 1 }, "Products": [ { "Last.... }

Notice: Trying to get property of non-object in  ...
Notice: Trying to get property of non-object in  ...
Notice: Trying to get property of non-object in  ...

2 个答案:

答案 0 :(得分:1)

由于您没有有效的JSON,我非常确定json_decode()只是失败了。 As per the manual

  

以适当的PHP类型返回json中编码的值。值   true,false和null返回为TRUE,FALSE和NULL   分别。如果json无法解码,或者如果是,则返回 NULL   编码数据比递归限制更深。

您可以通过以下方式验证: is_null()函数:

$obj = json_decode($json);
if( is_null($obj) ){
    // Invalid JSON, don't need to keep on working on it
}else{
    // Read data
}

如果一切正常,$obj将是一个对象,因此向echo提供它永远不会产生任何有用的东西:

echo $obj;

您可能希望改为使用var_dump()

答案 1 :(得分:0)

$ json是一个字符串。您应该首先使用json_decode($ json)

对其进行解码