【问题标题】:PHP parsing JSON response {"errors":[{"message":"msg here","code":34}]} [closed]PHP 解析 JSON 响应 {"errors":[{"message":"msg here","code":34}]} [关闭]
【发布时间】:2013-08-31 20:52:22
【问题描述】:

如何处理这个 JSON 响应?

{"errors":[{"message":"msg","code":34}]}

理想情况下,我可以这样做:

<?php

$response = '{"errors":[{"message":"msg","code":34}]}';

$decode = json_decode($response);

echo $decode->errors->message; // error 'Notice: Trying to get property of non-object'

或者,这个:

<?php

echo $decode->errors['message'] // error 'Notice: Undefined index: message'

但这显然不是正确的方法。

如何访问错误消息?

【问题讨论】:

  • $decode-&gt;errors[0]-&gt;message :P
  • 当您遇到此类问题时,请先尝试使用var_dump()print_r() 打印出内容。您要查找的代码类似于:print $decode-&gt;errors[0]-&gt;message;

标签: php json


【解决方案1】:

使用:

echo $decode->errors[0]->message;

因为结构是:

stdClass Object
(
    [errors] => Array
        (
            [0] => stdClass Object
                (
                    [message] => msg
                    [code] => 34
                )

        )

)

【讨论】:

  • @DaveChen 看到我在我的个人资料中谈到了这种行为 :)
  • 这是FGITW 获胜的地方。其他所有人(IMO)都应该立即删除他们的答案。
【解决方案2】:

您的错误对象实际上是一个数组,其中包含一个对象。这就是他们[] 所表明的。

echo $decode-&gt;errors[0]-&gt;message

这将针对数组中作为错误对象的第一项。然后您可以访问属性

【讨论】:

    【解决方案3】:

    解码后的对象看起来像

    stdClass Object
    (
        [errors] => Array
        (
            [0] => stdClass Object
                (
                    [message] => msg
                    [code] => 34
                )
    
        )
    
    )
    

    所以你可以相应地访问它

    eco $decode->errors[0]->message
    

    要获取错误数组的第一个元素,如果您不知道 ID,请使用 reset。

    所以

    $error = reset($decode->errors);
    $message = $error->message;
    

    或从 php 5.4 开始

    $message = reset($decode->errors)->message;
    

    有时,您不确定对象的结构,这里有一行漂亮的小代码可以很好地打印对象

    print '<pre>' . print_r($decode, TRUE) . '</pre>';
    

    【讨论】:

      【解决方案4】:
      $decode = json_decode($response,true);
      echo $decode['error']['message']
      

      将第二个参数 true 传递给 json_decode$decode 转换为关联数组而不是 stdClass 对象 documentation here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-29
        • 1970-01-01
        • 1970-01-01
        • 2013-08-04
        • 2017-11-19
        • 1970-01-01
        • 2012-08-12
        相关资源
        最近更新 更多