2020-08-21 09:42发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我在这种情况下:
PI正在REST发送方CC中接收HTTP请求。
我需要将源文件放在正确的目标字段中,同时将整个json有效负载字符串放入目标字段" json_string"中。
我尝试了很多方法,但是都失败了,有人能给我一个线索吗?
您好!
也许是,我不明白这个主意,但看起来要求是存储原始JSON内容,而不是REST适配器的JSON-XML +自定义映射XML的结果 -JSON转换。
我只需使用Java映射即可获取源JSON(无需在适配器级别将其转换为XML),将其保存为字符串,使用适当的库获取XML结构并构建目标XML文档(包括
关于此,Evgeniy。
嗨,陈晓东,
只是要进行迭代,您需要在json字符串中提供json负载。 我说的对吗?
如果是这样,则可以使用"用户定义函数"将请求xml转换为json,然后映射到字段" json_string"。
感谢与问候-Rajesh PS
您好,小东!
这是一个示例Java映射类,可从输入JSON有效负载中生成XML输出:
Evgeniy。
嗨,Eygniy。
是的,完全正确,我需要原始JSON内容,而不是REST适配器的JSON-XML +自定义映射XML-JSON转换的结果。
我认为您的想法会奏效,但我不知道如何像您所说的那样建立ESR。 我设置CC时没有将JSON转换为XML,但是我不知道如何在映射中接收内容。
我创建了如下的消息类型和映射,对吗? json内容在哪里? 在"数据"字段中?
因为我不知道如何编写Java映射,所以我已经使用PI消息映射作为波纹管进行了测试,
但获得异常:com.sap.aii.adapter.xi.routing.RoutingException:无法解析XML消息有效负载以提取用于确定接收方的操作。org.xml.sax.SAXParseException; lineNumber:1; columnNumber:1; 序言中不允许内容。 我将其理解为:消息类型MT_JSON_STRING_IN无法接收json内容。
我是对的吗? 那我该怎么办?
嗨,夏,
您可以为此使用json库。 只需导入罐子,然后仅输入一行代码即可。
https://mvnrepository.com/artifact/org.json/json
谢谢! Evgeniy 。
我对读取传入的JSON有效负载具有类似的要求,并且能够使用上述代码作为参考来实现它。
最多设置5个标签!
您好!
也许是,我不明白这个主意,但看起来要求是存储原始JSON内容,而不是REST适配器的JSON-XML +自定义映射XML的结果 -JSON转换。
我只需使用Java映射即可获取源JSON(无需在适配器级别将其转换为XML),将其保存为字符串,使用适当的库获取XML结构并构建目标XML文档(包括
关于此,Evgeniy。
嗨,陈晓东,
只是要进行迭代,您需要在json字符串中提供json负载。 我说的对吗?
如果是这样,则可以使用"用户定义函数"将请求xml转换为json,然后映射到字段" json_string"。
感谢与问候-Rajesh PS
您好,小东!
这是一个示例Java映射类,可从输入JSON有效负载中生成XML输出:
< pre> import java.io.ByteArrayOutputStream; 导入java.io.IOException; 导入java.io.InputStream; 导入java.io.OutputStream; 导入org.json.JSONObject; 导入org.json.XML; 导入com.sap.aii.mapping.api.AbstractTransformation; 导入com.sap.aii.mapping.api.StreamTransformationException; 导入com.sap.aii.mapping.api.TransformationInput; 导入com.sap.aii.mapping.api.TransformationOutput; 公共类GenericJSONToXMLConverter扩展AbstractTransformation { 受保护的字符串messageTypeName; 受保护的String messageTypeNamespace; 公共无效的transform(TransformationInput输入,TransformationOutput输出)抛出StreamTransformationException { 尝试{ messageTypeName = in.getInputParameters()。getString(" MessageType")。trim(); } catch(例外e){ 抛出新的StreamTransformationException("找不到参数'MessageType':" + e.getMessage()); } 尝试{ messageTypeNamespace = in.getInputParameters()。getString(" MessageTypeNS")。trim(); } catch(例外e){ 抛出新的StreamTransformationException("找不到参数'MessageTypeNS':" + e.getMessage()); } executeMapping(in.getInputPayload()。getInputStream(),out.getOutputPayload()。getOutputStream()); } public void executeMapping(InputStream is,OutputStream os)引发StreamTransformationException { 尝试{ 如果(messageTypeName.isEmpty()) 抛出新的StreamTransformationException(" MessageType'的参数值不能为空"); 如果(messageTypeNamespace.isEmpty()) 抛出新的StreamTransformationException(" MessageTypeNS'的参数值不能为空"); 字符串有效负载字符串=新的字符串(getByteArrayFromInputStream(is)," UTF-8"); JSONObject json =新的JSONObject(payloadString); 字符串msgHeader ="Evgeniy。
嗨,Eygniy。
是的,完全正确,我需要原始JSON内容,而不是REST适配器的JSON-XML +自定义映射XML-JSON转换的结果。
我认为您的想法会奏效,但我不知道如何像您所说的那样建立ESR。 我设置CC时没有将JSON转换为XML,但是我不知道如何在映射中接收内容。
我创建了如下的消息类型和映射,对吗? json内容在哪里? 在"数据"字段中?
因为我不知道如何编写Java映射,所以我已经使用PI消息映射作为波纹管进行了测试,
但获得异常:com.sap.aii.adapter.xi.routing.RoutingException:无法解析XML消息有效负载以提取用于确定接收方的操作。org.xml.sax.SAXParseException; lineNumber:1; columnNumber:1; 序言中不允许内容。
我将其理解为:消息类型MT_JSON_STRING_IN无法接收json内容。
我是对的吗? 那我该怎么办?
嗨,夏,
您可以为此使用json库。 只需导入罐子,然后仅输入一行代码即可。
https://mvnrepository.com/artifact/org.json/json
String xml_data ="谢谢! Evgeniy 。
我对读取传入的JSON有效负载具有类似的要求,并且能够使用上述代码作为参考来实现它。
一周热门 更多>