点击此处---> 群内免费提供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 ="
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"
}
}
]
}
在"操作映射测试"选项卡中进行测试时,它没有显示错误。 但是,当从服务器接收到相同的有效负载时,它会显示映射错误
我非常感谢您提供的帮助。
此致……
嗨丽贝卡,
确定要从服务器接收与上述完全相同的有效载荷吗?
您可以尝试:
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。
嗨,丽贝卡,
"不起作用"是什么意思? 做System.out.println((int)sourcexml.charAt(0)); 返回123?
如果不是,那就是有效载荷的接收,因为sourcexml必须以大括号开头。
请告诉我们您将获得什么" int"。
关于,
Pierre。
看着错误,我认为JSON响应与您在ESR中测试的不一样。
有一个 看看下面的therad
java-JSONObject文本必须以' {' 在1 [字符2第1行]处带有' {' 错误-…
可能是因为您还在" [""]"
中收到了JSON响应,如果这样,您可能想要替换akb建议的那些花括号 。
我也遇到了这个问题,下面是解决方案(以防有人遇到):
在JSONObject实例之前,添加该语句。 该语句将查找'{'的第一个索引和'}'的最后一个索引,并保留子字符串。 需要加1以保持右括号。
一周热门 更多>