如何处理此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
对象文档