Php 防止json编码以字符串形式返回数组
查询数据库时,我得到以下json响应:Php 防止json编码以字符串形式返回数组,php,json,laravel-5,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
[{"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
值是一个字符串并且应该是一个数组之外,这一切都很好
我使用Laravel5.3作为我的框架,但我不认为这有什么区别
我可以强制它以数组而不是字符串的形式返回数组吗?在主字符串中,您的产品也是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
)
)
)
)
在主字符串中,您的产品也是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
)
)
)
)
products
值看起来是双重JSON编码的。可以包含生成此JSON的代码吗?这是一个laravel查询,DB::table('orders')->get();db中的列是这样的:[{“count”:2,“id”:1,“price”:275,“name”:“Kayak”},{“count”:1,“id”:2,“price”:48.95,“name”:“lifehaker”}]它以JSON格式保存在db中?那么,您的“产品”已经是一个字符串了。你应该解码它,把它插入你的对象,然后对整个东西进行编码。您看到的是@Don'tPanic所说的,一个双json编码的对象。PD:您不应该将json结构保存在关系数据库中。仅仅因为angular发送json并不意味着您必须直接存储json。我建议将其解码并使用它填充产品实体。products
值看起来是双重JSON编码的。可以包含生成此JSON的代码吗?这是一个laravel查询,DB::table('orders')->get();db中的列是这样的:[{“count”:2,“id”:1,“price”:275,“name”:“Kayak”},{“count”:1,“id”:2,“price”:48.95,“name”:“lifehaker”}]它以JSON格式保存在db中?那么,您的“产品”已经是一个字符串了。你应该解码它,把它插入你的对象,然后对整个东西进行编码。您看到的是@Don'tPanic所说的,一个双json编码的对象。PD:您不应该将json结构保存在关系数据库中。仅仅因为angular发送json并不意味着您必须直接存储json。我建议将其解码并使用它填充产品实体。