当前位置: 首页 > 面试题库 >

json_decode()返回错误“注意:试图获取非对象的属性”

谭卜鹰
2023-03-14
问题内容

我正在尝试编写一个脚本,该脚本使用cURL从远程位置(在本例中为twitch.tv)获取JSON文件(不要以为该部分太相关,尽管无论如何我还是最好提一下)。出于示例目的,假设它返回的JSON对象存储在变量中后看起来像这样:

$json_object = {"_links":{"self":"https://api.twitch.tv/kraken/streams/gmansoliver","channel":"https://api.twitch.tv/kraken/channels/gmansoliver"},"stream":null}

我访问“流”属性,我尝试了以下代码:

<?php
    $json_object = {"_links":{"self":"https://api.twitch.tv/kraken/streams/gmansoliver","channel":"https://api.twitch.tv/kraken/channels/gmansoliver"},"stream":null}

    $json_decoded = json_decode($json_object, true);
    echo $json_decoded->stream;
?>

当我尝试此操作时,出现错误“注意:试图在第48行的D:\ Servers \ IIS \ Sites \ mysite \
getstream.php中获取非对象的属性”。

我是否使用json_decode()错误,或者从抽搐发送的JSON对象有问题吗?

编辑:

我现在有了JSON对象:

{"access_token": "qwerty1235","refresh_token": "asdfghjkl=","scope": ["user_read"]}

如果尝试使用对其进行解码,则会json_decode()收到以下错误:Object of class stdClass could not be converted to string。有什么建议吗?

预先感谢您的任何帮助


问题答案:

您正在将JSON解码为数组。json_decode($json_object, true); 将返回一个数组

array (size=2)
  '_links' => 
    array (size=2)
      'self' => string 'https://api.twitch.tv/kraken/streams/gmansoliver' (length=48)
      'channel' => string 'https://api.twitch.tv/kraken/channels/gmansoliver' (length=49)
  'stream' => null

如果删除第二个参数并将其运行为 json_decode($json_object)

object(stdClass)[1]
  public '_links' => 
    object(stdClass)[2]
      public 'self' => string 'https://api.twitch.tv/kraken/streams/gmansoliver' (length=48)
      public 'channel' => string 'https://api.twitch.tv/kraken/channels/gmansoliver' (length=49)
  public 'stream' => null

请参阅文档,当为TRUE时,返回的对象将转换为关联数组。



 类似资料:
  • 问题内容: 我试图从中获取数据: 但是如果我想使用以下代码获取player_name变量: 我得到错误: 注意:尝试在第9行+ var_dump()的** \ htdocs \ index.php中获取非对象的属性将返回:NULL 返回: 问题答案: 这是因为是对象的单元素数组,所以首先应访问作为对象的数组元素,然后访问其属性。 您粘贴的转储结果实际上很清楚地告诉了它。

  • 我正在尝试解析一个JSON字符串。在解析之前,我将数据放入了JSON格式,但是我得到了一个“试图获取非对象属性”的错误。 下面是我的代码: 我的JSON字符串将如下所示: 有人能帮我找出我做错了什么吗?

  • 问题内容: 我正在尝试制作更新表单,该表单将为选定的特定ID检索数据,并填写表单,以便其可用于更新。 当我单击特定条目(在我的情况下为Product)上的Edit时,它将带我到,但是对于我在表单元素中使用的每个变量,都显示错误 “试图获取非对象的属性”。 使用,我得到了正确的关联数组,因此正确传递了它。 这是我的摘录。 是包含所有键值对的数组,但由于某种原因我无法填写表格。 先感谢您! 问题答案:

  • 简单的代码不起作用!我一直在用if语句获取行上非object的属性时出错。我尝试像数组一样访问它,但收到一条消息说它不能以数组的形式访问stdClass。 $group的print\u r、var\u dump和dd可以给出: 使用$setting=$group\u可以- 返回错误不能使用stdClass类型的对象作为数组 laravel错误的详细信息如下: 可处理的例外情况- 编辑我删除了第一部

  • 无法显示要查看的数据库信息,出现错误 尝试获取非对象的属性 让我解释一下逻辑: 用户可以创建多个公司 我没有问题插入信息到数据库,一切都很好。我可以在我的显示视图中显示来自用户表和公司表的所有信息,但我不能在我的视图中显示来自Company_Items表的信息。我想我的关系或钥匙出了问题,但是什么?尝试显示属于特定公司的项目名称 公司表: id(int) company_name(字符串) 信息(

  • 这是我能言善辩的关系- 当我访问完整对象时- 我得到对象 但当我试图从对象中访问单个属性时- 我有错误 正在尝试获取非对象的属性'Office_Name'