SAP Cloud Platform集成– XML到JSON的转换

2020-08-22 07:09发布

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

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


我有一个IFLOW,其中我执行了将数据发送到外部方所需的XML到JSON转换。

转换前的XML:

 <?xml version =" 1.0" encoding =" UTF-8"?>
 <根>
   <元素>
      4.01 
      
      0.538 
      false 
   
   <元素>
      3.85 
      
      0.540 
      
   
  
我的问题是,转换后,我的JSON文件包含
 {" element":[{" field1":" 4.01"," field2":""," field3":" 0.538"," field4":" false"},
 {" field1":" 3.85"," field2":""," field3":" 0.540"," field4":""}]} 
结果需要看起来像:

 [{" field1":" 4.01"," field2":""," field3":" 0.538"," field4":" false"},
 {" field1":" 3.85"," field2":""," field3":" 0.540"," field4":""}]] 

如何在发送数据之前从数据中删除{" element" :? 我尝试了一个没有运气的常规脚本。

我使用以下方法定义了XML到JSON的转换-不使用命名空间映射; JSON前缀=冒号; 抑制JSON根; 流式XML元素//root/element

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

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


我有一个IFLOW,其中我执行了将数据发送到外部方所需的XML到JSON转换。

转换前的XML:

 <?xml version =" 1.0" encoding =" UTF-8"?>
 <根>
   <元素>
      4.01 
      
      0.538 
      false 
   
   <元素>
      3.85 
      
      0.540 
      
   
  
我的问题是,转换后,我的JSON文件包含
 {" element":[{" field1":" 4.01"," field2":""," field3":" 0.538"," field4":" false"},
 {" field1":" 3.85"," field2":""," field3":" 0.540"," field4":""}]} 
结果需要看起来像:

 [{" field1":" 4.01"," field2":""," field3":" 0.538"," field4":" false"},
 {" field1":" 3.85"," field2":""," field3":" 0.540"," field4":""}]] 

如何在发送数据之前从数据中删除{" element" :? 我尝试了一个没有运气的常规脚本。

我使用以下方法定义了XML到JSON的转换-不使用命名空间映射; JSON前缀=冒号; 抑制JSON根; 流式XML元素//root/element

付费偷看设置
发送
3条回答
CJones
1楼 · 2020-08-22 07:29.采纳回答

Beverely,您好

您绝对可以通过一些Groovy编程来解决此问题。 用Groovy解析XML很简单,就像生成JSON一样。 看一下这个脚本:

 import com.sap.gateway.ip.core.customdev.util.Message
 导入groovy.util.XmlSlurper
 导入groovy.json.JsonOutput

 def消息processData(消息消息){
     def root = new XmlSlurper()。parseText(message.getBody())
     def元素= []
    
     root.element.each {e->
         def fieldMap = [:]
         e.children()。each {c->
             fieldMap [c.name()] = c.text()
         }
         元素<< fieldMap
     }
    
     message.setBody(JsonOutput.toJson(elements))
     返回讯息
 } 

脚本在元素上进行迭代。 对于每个元素,它都会为每个子元素的名称和文本内容创建一个Map。 该地图已添加到列表中。 最后,使用JsonOutput类将Map对象列表转换为JSON。

问候

Morten

huskylover
2楼-- · 2020-08-22 07:43

您好,贝弗利公园

不,它只能在一个级别上使用。 请将此作为新问题发布,并记住同时显示输入和预期输出。 都作为XML/JSON使用-使用"代码"按钮-以便更轻松地复制粘贴。

致谢

Morten

spaceman01
3楼-- · 2020-08-22 07:40

谢谢!! 这一点与新的XmlSlurper()。parseText(message.getBody(java.lang.String))进行少量修改就完美地结合在一起。 您能推荐一本普通的脚本书吗? 我当然需要了解更多。

一周热门 更多>