Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP解析JSON响应{“errors”:[{“message”:“msg here”,“code”:34}]}_Php_Json - Fatal编程技术网

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

PHP解析JSON响应{“errors”:[{“message”:“msg here”,“code”:34}]},php,json,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

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

        )

)

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

echo$decode->错误[0]->消息


这将以数组中的第一项为目标,该项是错误对象。然后,您可以访问解码对象的属性

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

    )

)
因此,您可以相应地访问它

eco $decode->errors[0]->message
要获取errors数组的第一个元素,如果您不知道ID,请使用reset

所以

或者从PHP5.4开始

$message = reset($decode->errors)->message;
有时,您不确定对象的结构,这里有一行漂亮的代码可以很好地打印对象

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

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

$decode->errors[0]->消息:当您遇到此类问题时,请尝试先使用var_dump或print_r打印内容。您要查找的代码类似于:print$decode->errors[0]->message;前:+1@DaveChen看,我在我的个人资料中谈到了这种行为:这就是胜利的地方。在我看来,其他人应该马上删除他们的答案。
print '<pre>' . print_r($decode, TRUE) . '</pre>';
$decode = json_decode($response,true);
echo $decode['error']['message']