防止json编码将数组作为字符串返回

时间:2016-10-19 18:36:12

标签: php json laravel-5

当我查询我的数据库时,我得到以下json响应:

[{"id":1,"name":"my name","street":"Sava Burica","city":"Belgrade","state":"Zemun","zip":"11080","country":"Serbia","giftwrap":null,"products":"[{\"count\":2,\"id\":1,\"price\":275,\"name\":\"Kayak\"},{\"count\":1,\"id\":2,\"price\":48.95,\"name\":\"Lifejacket\"}]"}]

除了products值是一个字符串并且它应该是一个数组之外,这一切都很好。

我使用Laravel 5.3作为我的框架,但我认为这不会有所作为。

我可以以某种方式强制它将数组作为数组而不是字符串返回吗?

1 个答案:

答案 0 :(得分:2)

在主字符串中,您的产品也是JSON字符串编码数据,所以您需要做的就是解码它

$s = '[{"id":1,"name":"my name","street":"Sava Burica","city":"Belgrade","state":"Zemun","zip":"11080","country":"Serbia","giftwrap":null,"products":"[{\"count\":2,\"id\":1,\"price\":275,\"name\":\"Kayak\"},{\"count\":1,\"id\":2,\"price\":48.95,\"name\":\"Lifejacket\"}]"}]';
$address = json_decode($s,true);

$s = $address[0]['products'];
$address[0]['products'] = json_decode($s,true);
print_r($address);

返回

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => my name
            [street] => Sava Burica
            [city] => Belgrade
            [state] => Zemun
            [zip] => 11080
            [country] => Serbia
            [giftwrap] => 
            [products] => Array
                (
                    [0] => Array
                        (
                            [count] => 2
                            [id] => 1
                            [price] => 275
                            [name] => Kayak
                        )

                    [1] => Array
                        (
                            [count] => 1
                            [id] => 2
                            [price] => 48.95
                            [name] => Lifejacket
                        )

                )

        )

)
相关问题