-4

我该如何处理这个 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

4 回答 4

1

利用:

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

因为结构是:

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

        )

)
于 2013-08-31T20:55:02.010 回答
0

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

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

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

于 2013-08-31T20:55:08.290 回答
0

解码的对象看起来像

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

    )

)

所以你相应地访问它

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

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

所以

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

或从 php 5.4 开始

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

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

print '<pre>' . print_r($decode, TRUE) . '</pre>';
于 2013-08-31T20:56:06.273 回答
0
$decode = json_decode($response,true);
echo $decode['error']['message']

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

于 2013-08-31T20:56:13.687 回答