Formato de respuesta de REST

Los servicios REST soportan los formatos JSON y XML para los datos de entrada y salida de forma predeterminada. El formato predeterminado es JSON.

Cuando se envía una cadena de XML a un servicio REST, debe establecer la cabecera de HTTP de tipo de contenido para que sea application/xml. El servicio REST convierte los datos de entrada de XML en el formato JSON aceptado por los servicios de REST. Por lo tanto, el formato de XML de entrada debe seguir una estructura determinada para que pueda transformarse en el objeto JSON aceptado por los servicios REST. Al solicitar el formato de respuesta XML para un servicio REST, se llama a com.ibm.commerce.rest.utils.MapToXMLUtil.serializeMapToXML para transformar un objeto JSON en una cadena XML. Debe tener el mismo formato XML al pasarlo de nuevo como datos de entrada para servicios REST. De lo contrario, es posible que los servicios REST no puedan analizar la cadena para obtener los datos de entrada correctos.

Correlación de formato JSON y formato XML

Los siguientes fragmentos de código demuestran ejemplos de cómo los formatos JSON y los formatos XML se transforman entre sí.

Ejemplo: Una correlación plana, donde un valor es una lista de tipo cadena:

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>

Ejemplo: Un mapa con una lista anidada:

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>

El programa de utilidad serializeMapToXML

Los servicios REST convierten el formato JSON en formato XML mediante el programa de utilidad com.ibm.commerce.rest.utils.MapToXMLUtil.serializeMapToXML.Este programa de utilidad serializa un mapa para XML. Este programa de utilidad se puede invocar de una de las siguientes maneras:
java.lang.String serializeMapToXML(java.util.Map<?,?> mapRef)
Este método toma un mapa y devuelve una representación XML de él. Este método asigna un elemento de nivel superior, llamado root, para la estructura de XML.
java.lang.String serializeMapToXML(java.util.Map<?,?> mapRef, Booleano sin formato)
Este método realiza la misma conversión de correlación, excepto que el XML se devuelve sin formato si el parámetro booleano se establece en true.
Nota: La correlación de estos métodos debe estar en un formato que se pueda serializar en un objeto JSON mediante JSON4J.jar.