双引号和反斜杠JSON回复

时间:2016-07-28 08:46:25

标签: php json symfony jmsserializerbundle

使用供应商提供的API,我得到了一个格式如下的JSON回复:

{"d":"{\"IdProduct\":0,\"Status\":0,\"Errors\":[\"B_MESSAGE_INVALID_REQUIRED_FIELDS\"]}"}

在尝试使用JMS(PHP)反序列化时导致问题,因为d的内容不被视为对象而是字符串。

我尝试使用数组和json_encode()从PHP创建json,并且一切都适用于反序列化方法:

{"d":{"IdProduct":123456,"Status":1,"Errors":["B_MESSAGE_INVALID_REQUIRED_FIELDS"]}}

是否有可能从我这边删除无用的反斜杠和引号?似乎供应商无法改变格式。

1 个答案:

答案 0 :(得分:0)

看起来API返回编码为JSON对象的JSON字符串。这意味着,您首先需要解码“外部”对象,然后对$obj['d']进行JSON解码,因为它是一个JSON字符串。

json_decode(json_decode($json)->d)

显然有人应该修复API以不返回双重编码的JSON。