2016-07-28 3 views
0

En utilisant une API fournie par un fournisseur J'ai une réponse JSON formaté comme ça:guillemet et antislashs JSON réponse

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

Cela cause en cause lorsque vous essayez de désérialiser avec JMS (PHP) parce que le contenu de d n'est pas considéré comme un objet mais une chaîne.

J'ai essayé de créer JSON de PHP avec tableau et json_encode() et tout fonctionne très bien avec la méthode deserialize:

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

Est-il possible d'enlever les antislashs inutiles et des citations de mon côté? Le fournisseur semble ne pas pouvoir changer de format.

Répondre

0

Il semble que l'API renvoie une chaîne JSON codée dans un objet JSON. C'est-à-dire, vous devez d'abord décoder l'objet "externe", puis JSON-décoder le $obj['d'], car il s'agit d'une chaîne JSON.

json_decode(json_decode($json)->d) 

Il est évident que quelqu'un doit fixer l'API de ne pas retourner JSON double codé.