JSON对象的JAVA映射

2020-08-21 23:06发布

         点击此处--->   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)在

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

此致……

         点击此处--->   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条回答
奄奄一息的小鱼
1楼 · 2020-08-21 23:35.采纳回答

嗨丽贝卡,

确定要从服务器接收与上述完全相同的有效载荷吗?

您可以尝试:

System.out.println((int)sourcexml.charAt(0));

必须返回123。123表示它确实以大括号开头。

stackoverflow.com 上的此线程可能也有帮助:

http://stackoverflow.com/questions/19586199/aws-json-exception-a-jsonobject-text-must-begin-with-at-1-character-2-lin

>

此致

Pierre。

Doze时光
2楼-- · 2020-08-21 23:44

嗨,丽贝卡,

"不起作用"是什么意思? 做System.out.println((int)sourcexml.charAt(0)); 返回123?

如果不是,那就是有效载荷的接收,因为sourcexml必须以大括号开头。

请告诉我们您将获得什么" int"。

关于,
Pierre。

SAP小黑
3楼-- · 2020-08-21 23:35

看着错误,我认为JSON响应与您在ESR中测试的不一样。

有一个 看看下面的therad

java-JSONObject文本必须以' {' 在1 [字符2第1行]处带有' {' 错误-…

可能是因为您还在" [""]"

中收到了JSON响应,如果这样,您可能想要替换akb建议的那些花括号 。

暮风yp
4楼-- · 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以保持右括号。

一周热门 更多>