JSON对象的JAVA映射

2020-08-21 23:06发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)尊敬的专家, 我正在尝试使用...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家,

我正在尝试使用Hareesh共享的以下代码将JSON数据转换为XML。 有效

在" ESR操作映射测试"选项卡中使用

fine。 但是,如果在运行时运行相同的有效负载,则会显示错误。

代码

打包com.sap.json;

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

导入org.json.JSONObject;

导入com.sap.aii.mapping.api.AbstractTransformation;

导入com.sap.aii.mapping.api.StreamTransformationException;

导入com.sap.aii.mapping.api.TransformationInput;

导入com.sap.aii.mapping.api.TransformationOutput;

公共类ConvJsonXml扩展了AbstractTransformation {

公共无效变换(TransformationInput输入,TransformationOutput输出)抛出StreamTransformationException {

尝试{

字符串sourcexml =""; 字符串targetxml =""; 字符串行="";

InputStream ins = in.getInputPayload()。getInputStream();

BufferedReader br =新的BufferedReader(新的InputStreamReader(ins));

while((line = br.readLine())!= null)

sourcexml + = line +" \ n";

br.close();

JSONObject o =新的JSONObject(sourcexml);

targetxml = org.json.XML.toString(o);

targetxml =" " + targetxml +" ";

out.getOutputPayload()。getOutputStream()。write(targetxml.getBytes());

}

捕获(异常e){

抛出新的StreamTransformationException(e.getMessage());

}

}

}

有效载荷

{

"项目":[

{

"项目":{

"主题":"由DS Ross测试",

"文档ID":" 55DCE0A476D",

"发件人":"丽贝卡",

"发件人名称":" user1",

"日期":" 2013-02-14 11:14:40",

" ClassID":" 11"

}

},

{

"项目":{

"主题":"由Nick M测试",

" DocumentID":" 55DCE191D5E47",

"发件人":"戴夫·弗罗斯特",

"发件人名称":" user11",

"日期":" 2013-03-14 11:14:40",

" ClassID":" 11"

}

}

]

}

在"操作映射测试"选项卡中进行测试时,它没有显示错误。 但是,当从服务器接收到相同的有效负载时,它会显示映射错误

com.sap.engine.interfaces.messaging.api.exception.MessagingException:com.sap.engine.interfaces.messaging.api.exception.MessagingException:执行映射时遇到错误:com.sap。 aii.af.service.mapping.MappingException:应用程序映射程序com/sap/json/ConvJsonXml引发流转换异常: JSONObject文本必须以'{'开头1 [字符2第1行] com.sap.aii.adapter.soap.web.MessageServlet.doPost(MessageServlet.java:505)处的com.sap.aii.adapter.soap.web.SOAPHandler.processSOAPtoXMB(SOAPHandler.java:746) .http.HttpServlet.service(HttpServlet.java:754)位于javax.servlet.http.HttpServlet.service(HttpServlet.java:847)位于com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.runServlet(FilterChainImpl .java:202)在

我非常感谢您提供的帮助。

此致……

4条回答
暮风yp
2020-08-21 23:37

我也遇到了这个问题,下面是解决方案(以防有人遇到):

 char a ='{';
 char b ='}';

 sourcexml = sourcexml.substring(sourcexml.indexOf(a),sourcexml.lastIndexOf(b)+1);

 JSONObject o =新的JSONObject(sourcexml);
 

在JSONObject实例之前,添加该语句。 该语句将查找'{'的第一个索引和'}'的最后一个索引,并保留子字符串。 需要加1以保持右括号。

一周热门 更多>