Prezados Especialistas,
Estou tentando converter dados JSON em XML com o seguinte código compartilhado por Hareesh. Funciona bem ao ser testado na guia de Teste de Mapeamento de Operação ESR. Porém, ao executar o mesmo payload durante o tempo de execução, um erro é exibido.
Código
package com.sap.json;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.json.JSONObject;
import com.sap.aii.mapping.api.AbstractTransformation;
import com.sap.aii.mapping.api.StreamTransformationException;
import com.sap.aii.mapping.api.TransformationInput;
import com.sap.aii.mapping.api.TransformationOutput;
public class ConvJsonXml extends AbstractTransformation {
public void transform(TransformationInput in, TransformationOutput out) throws StreamTransformationException {
try {
String sourcexml = ""; String targetxml =""; String line ="";
InputStream ins = in.getInputPayload().getInputStream();
BufferedReader br = new BufferedReader( new InputStreamReader(ins));
while ((line = br.readLine()) != null)
sourcexml +=line+"\n";
br.close();
JSONObject o = new JSONObject(sourcexml);
targetxml = org.json.XML.toString(o);
targetxml = "<root>"+targetxml+"</root>";
out.getOutputPayload().getOutputStream().write(targetxml.getBytes());
}
catch (Exception e) {
throw new StreamTransformationException(e.getMessage());
}
}
}
Carga
{
"items": [
{
"item": {
"Subject": "teste por DS Ross",
"DocumentID": "55DCE0A476D",
"Sender": "Rebecca",
"SenderName": "usuario1",
"Date": "2013-02-14 11:14:40",
"ClassID": "11"
}
},
{
"item": {
"Subject": "teste por Nick M",
"DocumentID": "55DCE191D5E47",
"Sender": "Dave Froster",
"SenderName": "usuario11",
"Date": "2013-03-14 11:14:40",
"ClassID": "11"
}
}
]
}
Ao ser testado na guia de Teste de Mapeamento de Operação, não são exibidos erros. Porém, ao receber o mesmo payload do servidor, ocorre um erro de mapeamento
<SAP:Stack> com.sap.engine.interfaces.messaging.api.exception.MessagingException: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error encontrado ao executar o mapeamento: com.sap.aii.af.service.mapping.MappingException: O programa de mapeamento de aplicação com/sap/json/ConvJsonXml lança uma exceção de transformação de fluxo:
Um texto JSONObject deve começar com '{' em 1 [carácter 2 linha 1] em
com.sap.aii.adapter.soap.web.SOAPHandler.processSOAPtoXMB(SOAPHandler.java:746) em com.sap.aii.adapter.soap.web.MessageServlet.doPost(MessageServlet.java:505) em javax.servlet.http.HttpServlet.service(HttpServlet.java:754) em javax.servlet.http.HttpServlet.service(HttpServlet.java:847) em com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.runServlet(FilterChainImpl.java:202) em
Agradeço a ajuda compartilhada..
Saudações......