PHP解析JSON响应{“错误”:[{“消息”:“这里的消息”,“代码”:34}]}


PHP parsing JSON response {"errors":[{"message":"msg here","code":34}]}

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

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

如何访问错误消息?

使用:

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

因为结构是:

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

您的errors对象实际上是一个数组,里面有一个对象。这就是它们[]所指示的。

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

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

解码的对象看起来像

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>';
$decode = json_decode($response,true);
echo $decode['error']['message']

将第二个参数true传递给json_decode$decode转换为关联数组,而不是此处的stdClass对象文档