当前位置: 首页 > 知识库问答 >
问题:

php中的json解析返回尝试获取非对象错误的属性

邵华皓
2023-03-14

我正在尝试解析一个JSON字符串。在解析之前,我将数据放入了JSON格式,但是我得到了一个“试图获取非对象属性”的错误。

下面是我的代码:

$querys = "SELECT * FROM image_refrences WHERE building_id=''";
$rows = array();
$responce= array();
$data = $conn->query($querys);

while($row = $data->fetch_assoc()){
    $json['images'][] = array('id' => $row['id'],
                              'url' => $row['image_file'],
                              'location' => $row['location'] );     
}

$responce= json_encode($json, TRUE);
$rows=json_decode($responce,TRUE);

foreach ( $rows->images as $output ) {
    echo $output->id;
}

我的JSON字符串将如下所示:

{"images":[
    {"id":"1","url":"def6a9.jpg","location":""},
    {"id":"2","url":"def6a9.jpg","location":""},
    {"id":"3","url":"fullsize_distr.jpg","location":""}
]}

有人能帮我找出我做错了什么吗?

共有1个答案

巫化
2023-03-14

从中删除第二个参数:$rows=json_decode($responce,TRUE);

使用true,您将解码为一个多维数组,而不是一个对象数组,您将尝试使用具有$rows->images$output->id对象语法访问它。

或者,如果希望将其作为数组继续解码,则保留true参数,并使用数组语法访问结果:

foreach ( $rows['images'] as $output ) {
    echo $output['id'];
}

在进行更改之后,您的代码应该是这样的:

while($row = $data->fetch_assoc()){
    $json['images'][] = array('id' => $row['id'], 'url' => $row['image_file'], 'location' => $row['location'] );
}

$responce = json_encode($json);           // Remove TRUE
$rows = json_decode($responce);           // Remove TRUE

foreach ( $rows->images as $output ) {
    echo $output->id;
}

我可能假设得太多了。我假设您只是在试验JSON函数,因为您要对JSON进行编码,然后立即解码。如果您实际上不需要JSON,您可以跳过所有这些,只需要在while循环中输出ID。

while ($row = $data->fetch_assoc()){
    echo $row['id'];
}
 类似资料:
  • 问题内容: 我正在尝试编写一个脚本,该脚本使用cURL从远程位置(在本例中为twitch.tv)获取JSON文件(不要以为该部分太相关,尽管无论如何我还是最好提一下)。出于示例目的,假设它返回的JSON对象存储在变量中后看起来像这样: 我访问“流”属性,我尝试了以下代码: 当我尝试此操作时,出现错误“注意:试图在第48行的D:\ Servers \ IIS \ Sites \ mysite \ g

  • 在响应中,我们接收一个xml文件,然后转换为SimpleXMLElement,然后根据需要访问元素和属性。然而,当直接从字符串响应加载xml而不是从保存的响应加载xml时,我们得到了“尝试获取非对象的属性”。 当使用simplexml\u load\u字符串而不是simplexml\u load\u文件时,什么会导致xml失败? 以下是xml文件的一个片段:

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

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

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

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