可捕获的致命错误:在 json_decode

Posted

技术标签:

【中文标题】可捕获的致命错误:在 json_decode【英文标题】:Catchable fatal error: in json_decode 【发布时间】:2018-03-30 09:09:54 【问题描述】:

我想消除 JSON 视图格式,并像带逗号的字符串一样返回数据。

当我使用json_decode($row['test_row']) 时,它会返回给我

可捕获的致命错误:stdClass 类的对象无法转换 在C中字符串

<?php 
try 
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password );    
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = 'SELECT * FROM database.test;' ;
        $get_all_data = $conn->prepare($sql);
        $get_all_data -> execute(array($sql));
        $all_row = $get_all_data->fetch(PDO::FETCH_ASSOC); 
        $all = $all_row;
    
   catch(PDOException $e)
         
           echo $sql . "<br>" . $e->getMessage();
         

这里是表,表头:

    echo "<tbody>";
    echo "<table>";
          $conn = null;   
    while($row = $get_all_data->fetch(PDO::FETCH_ASSOC)) 
   

echo "<tr>  
       <td>" . json_decode($row['my_data']) . "</td> 
      </tr>";  
 
    echo "</tbody>";
    echo "</table>";  ?>

如果我让$row['my_data'],它会以 JSON 格式从数据库返回数据

【问题讨论】:

能否在您的问题中添加$row['my_data'] 的示例?谢谢。 json decode 将json string 转换为object 但您更想要一个字符串,而不是将其转换为数组,然后使用implode 进行合并或一些循环,取决于$row['my_data'] 【参考方案1】:

json_decode 返回 PHP 对象,然后您尝试使用 echo 将其打印为字符串。这是抛出这个错误。

您必须使用implode 或类似函数将其设为逗号分隔的字符串。然后它肯定会起作用。

因为我不知道$row['my_data'] 的价值,所以可以建议你确切的代码。

【讨论】:

非常感谢,我忘了使用函数“implode()”。现在它可以正常工作了。

以上是关于可捕获的致命错误:在 json_decode的主要内容,如果未能解决你的问题,请参考以下文章

PHP:异常和可捕获的致命错误有啥区别?

可捕获致命错误的 FindAll() 结果:DateTime 类的对象无法转换为字符串

可捕获的致命错误:WP_Error 类的对象无法转换为字符串

使用 mysqli_stmt 时 PhP 可捕获的致命错误

可捕获的致命错误:类 AppBundle\Entity\Categoria 的对象无法转换为字符串

可捕获的致命错误:WP_Error 类的对象无法转换为字符串