如何处理此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'
但这显然不是正确的方法。
如何访问错误消息?
答案 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