Formats de réponse REST

Les services REST prennent en charge les formats JSON et XML pour les données d'entrée et de sortie par défaut. La format par défaut est JSON.

Lorsqu'une chaîne XML est envoyée à un service REST, vous devez définir l'en-tête HTTP de type contenu sur application/xml. Le service REST convertit les données d'entrée XML au format JSON accepté par les services REST. Par conséquent, votre format XML d'entrée doit suivre une certaine structure afin de pouvoir être transformé en objet JSON accepté par les services REST. Lorsque vous demandez le format de réponse XML pour un service REST, com.ibm.commerce.rest.utils.MapToXMLUtil.serializeMapToXML est appelé pour transformer un objet JSON en chaîne XML. Vous devez conserver le même format XML lorsque vous le transmettez en tant que données d'entrée pour les services REST. Dans le cas contraire, les services REST pourraient ne pas être en mesure d'analyser la chaîne pour obtenir les données d'entrée correctes.

Mappage du format XML et du format JSON

Les fragments suivants montrent des exemples de la façon dont les formats JSON et les formats XML sont transformés l'un par rapport à l'autre.

Exemple : Une mappe plate, où une valeur est une liste de type Chaîne :

JSON

{
 "firstName" : "John",
 "lastName" : "Smith",
 "addressLine": [
  "100 main st.",
  "Suite 100",
  ""
 ],
 "city" : "RTP",
 "state" : "North Carolina",
 "country" : "United States",
 "zipCode" : "27560",
 "phone1" : "919-111-1111",
 "email1" : "u1@m.com",
}
XML

<?xml version="1.0" encoding="UTF-8" ?>
<root>
 <firstName>John</firstName>
 <lastName>Smith</lastName>
 <addressLine>100 main st.</addressLine>
 <addressLine>Suite 100</addressLine>
 <addressLine />
 <city>RTP</city>
 <state>North Carolina</state>
 <country>United States</country>
 <zipCode>27560</zipCode>
 <phone1>919-111-1111</phone1>
 <email1>u1@m.com</email1>
</root>

Exemple : Une mappe avec une liste imbriquée :

JSON

{
 "orderItem": [
  {
   "productId": "10541",
   "quantity": "2.0",
   "itemAttributes": [
    {
     "attrName": "10299",
     "attrValue": "4T"
    }
   ]
  },
  {
   "productId": "10260",
   "quantity": "1.0"
  }
 ]
}
XML

<?xml version="1.0" encoding="UTF-8" ?>
<root>
 <orderItem>
  <productId>10541</productId>
  <quantity>2.0</quantity>
  <itemAttributes>
   <attrName>10299</attrName>
   <attrValue>4T</attrValue>
  </itemAttributes>
 </orderItem>
 <orderItem>
  <productId>10260</productId>
  <quantity>1.0</quantity>
 </orderItem>
</root>

L'utilitaire serializeMapToXML

Les services REST convertissent le format JSON en format XML à l'aide de l'utilitaire com.ibm.commerce.rest.utils.MapToXMLUtil.serializeMapToXML. Cet utilitaire sérialise une mappe en XML. Cet utilitaire peut être invoqué de l'une des façons suivantes :
java.lang.String serializeMapToXML(java.util.Map<?,?> mapRef)
Cette méthode prend une mappe et renvoie une représentation XML de celle-ci. Cette méthode attribue un élément de niveau supérieur, appelé root, pour la structure XML.
java.lang.String serializeMapToXML(java.util.Map<?,?> mapRef, booléen non formaté)
Cette méthode effectue la même conversion Mappe, sauf que le XML est renvoyé non formaté si le paramètre Booléen est défini sur true.
Remarque : La mappe de ces méthodes doit être dans un format qui peut être sérialisé à un objet JSON à l'aide de JSON4J.jar.