PHP解析JSON响应{“errors”:[{“message”:“msg here”,“code”:34}]}

时间:2013-08-31 20:52:23

标签: php json

如何处理此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'

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

如何访问错误消息?

4 个答案:

答案 0 :(得分:1)

使用:

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

因为结构是:

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

        )

)

答案 1 :(得分:0)

您的errors对象实际上是一个包含对象的数组。这就是他们[]表示的内容。

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

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

答案 2 :(得分:0)

解码后的对象看起来像

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

    )

)

所以你可以相应地访问它

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

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

所以

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

或从PHP 5.4开始

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

有时,你不确定对象的结构,这里有一个很好的小代码行来很好地打印对象

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

答案 3 :(得分:0)

$decode = json_decode($response,true);
echo $decode['error']['message']

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