点击此处---> 群内免费提供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脚本处理多级元素?
再次打招呼
为此,您可以使用内置转换器将XML转换为JSON,然后使用Groovy脚本清理JSON。
在脚本中,使用JsonSlurper读取JSON并创建一个要操作的对象。 然后进行必要的更改,并使用JsonOutput来写回JSON。
我将向您展示一个示例,然后您可以-应该! -其余部分自己编写。
仅使用内置转换器,将TestResultsLine和TestResultsDetail转换为:
您要删除"元素"属性,并将它们包含的单个对象添加到数组中。 以下是一个脚本可以完全做到这一点:
现在JSON输出与您要查找的内容匹配:
对其余的差异应用相同的方法,就可以了。
开心,
Morten
我很抱歉。 我上传了错误的XML。
尊敬的
在您的其他XML到JSON的问题,则可以根据输入自动生成输出。 这里情况不同! 输出包含比输入更多的信息,所以您将永远无法使用内置工具来做到这一点。
您在这里需要做的是编写一个Groovy脚本,该脚本基于JSON对象生成 输入有效负载的XML内容。 您可以使用我在上一个答案中使用的XmlSlurper和JsonOutput类,但是代码的逻辑将更加针对此问题。 让其中一个工作,然后移至下一个。 最后,您可以清理它,删除重复的代码,等等。如果您遇到特定代码段的问题,请随时在此处发布有关它的问题。
祝您好运,玩得开心!
关于,
Morten
那太好了。 由于您的问题已解决,因此,如果您愿意接受我的答复,将不胜感激。
致谢
Morten
谢谢! 这很正常。
一周热门 更多>