SAP Cloud Platform集成–具有多个级别元素的XML到JSON转换

2020-08-21 04:39发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有一个IFLOW,在将数据发送...

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

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


我有一个IFLOW,在将数据发送到外部方之前,我需要执行XML到JSON的转换。 XML包含多个"元素"级别。

转换前的XML:

 <?xml version ='1.0'encoding ='UTF-8'?>
 <根>
   
      2020-02-02 
     
     
     
     
     
     
     
     
     <重量>
     
      4.54 
      3.42 
     <乳糖> 4.40 
      8.96 
      5.54 
      13.5 
      500 
     <氮气> 7.5 
      17 
      66 
      90 
      1 
      0.541 
     <温度> 37 
     <抑制剂> NF 
      99 
     <沉积物>
     
      002192817791 
   
 
 

结果应如下所示:

 {
 " TestResultsHeader":{
 " InspectionParty":{
 " ID":" 0003023291",
 "名称":" DairyOne"
 },
 " InspectionOrderID":[]
 },
 " TestResultsLine":[{
 " ParentSampleID":" 100065123",
 " TestResultsDetail":[{
 " SampleID":"",
 "分类":{
 "代码":{
 "代码":"牛奶"
 },
 "描述":"官方"
 },
 " TestDateTime":" 2018-03-28T09:32:10-06:00",
 "延期": {
 "代码":" 50",
 "名称":"温度",
 "措施":{
 " @unitCode":" F",
 "值":" 38"
 }
 },
 " TestQuantitativeMeasurement":[{
 " ID":" BF",
 "名称":"黄油",
 " ValueRange":{
 " FirstValue":" 3.79",
 " OperatorCode":" EQ",
 " UOMCode":" mm Hg"
 }
 },
 {
 " ID":" FP",
 "名称":" freezePoint",
 " ValueRange":{
 " FirstValue":" 0.558",
 " OperatorCode":" EQ",
 " UOMCode":" mm Hg"
 }
 },
 {
 " ID":"乳糖",
 "名称":"乳糖",
 " ValueRange":{
 " FirstValue":" 4.66",
 " OperatorCode":" EQ",
 " UOMCode":" mm Hg"
 }
 },
 {
 " ID":" mun",
 "名称":" mun",
 " ValueRange":{
 " FirstValue":" 11.3",
 " OperatorCode":" EQ",
 " UOMCode":" mm Hg"
 }
 },
 {
 " ID":" otherSolids",
 "名称":" otherSolids",
 " ValueRange":{
 " FirstValue":" 5.72",
 " OperatorCode":" EQ",
 " UOMCode":" mm Hg"
 }
 },
 {
 " ID":"蛋白质",
 "名称":"蛋白质",
 " ValueRange":{
 " FirstValue":" 3.08",
 " OperatorCode":" EQ",
 " UOMCode":" mm Hg"
 }
 },
 {
 " ID":"序列",
 " Name":" sequence",
 " ValueRange":{
 " FirstValue":" 800",
 " OperatorCode":" EQ",
 " UOMCode":" mm Hg"
 }
 },
 {
 " ID":" solidsNonfat",
 "名称":" solidsNonfat",
 " ValueRange":{
 " FirstValue":" 8.80",
 " OperatorCode":" EQ",
 " UOMCode":" mm Hg"
 }
 },
 {
 " ID":" somaticCellCount",
 "名称":" somaticCellCount",
 " ValueRange":{
 " FirstValue":" 140",
 " OperatorCode":" EQ",
 " UOMCode":" mm Hg"
 }
 },
 {
 " ID":"重量",
 "名称":"重量",
 " ValueRange":{
 " FirstValue":" 92660",
 " OperatorCode":" EQ",
 " UOMCode":" mm Hg"
 }
 }
 ],
 " TestQualitativeMeasurement":[{
 " ID":" coli",
 " Name":" coli",
 " ValueSet":{
 "值":"是"
 }
 },
 {
 " ID":"抑制剂",
 "名称":"抑制剂",
 " ValueSet":{
 "值":"是"
 }
 },
 {
 " ID":" lpc",
 "名称":" lpc",
 " ValueSet":{
 "值":"是"
 }
 },
 {
 " ID":" pi",
 "名称":" pi",
 " ValueSet":{
 "值":"是"
 }
 },
 {
 " ID":"沉积物",
 "名称":"沉淀",
 " ValueSet":{
 "值":"是"
 }
 },
 {
 " ID":" standardPlateCount",
 "名称":" standardPlateCount",
 " ValueSet":{
 "值":"是"
 }
 }
 ]
 }]
 }
 ]
 }
 

使用XML到JSON转换器会将" element"字段标记保留在结果中。 有没有办法用Groovy脚本处理多级元素?

5条回答
bbpeas
2020-08-21 05:21

尊敬的

您的其他XML到JSON的问题,则可以根据输入自动生成输出。 这里情况不同! 输出包含比输入更多的信息,所以您将永远无法使用内置工具来做到这一点。

您在这里需要做的是编写一个Groovy脚本,该脚本基于JSON对象生成 输入有效负载的XML内容。 您可以使用我在上一个答案中使用的XmlSlurper和JsonOutput类,但是代码的逻辑将更加针对此问题。 让其中一个工作,然后移至下一个。 最后,您可以清理它,删除重复的代码,等等。如果您遇到特定代码段的问题,请随时在此处发布有关它的问题。

祝您好运,玩得开心!

关于,

Morten

一周热门 更多>