用于XML到JSON转换的Groovy脚本

2020-08-21 00:07发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家您好, 我需要使用Groo...

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

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


专家您好,

我需要使用Groovy脚本来克服Cloud Platform Integration上标准XML to JSON转换器的缺点。

这是我需要获取的输出JSON格式:

 {
 " PO":" test21",
 "项目":[{
 " Id":" 000010",
 "产品":" XXXXX",
 "数量":5
 " Discount_Percent":0,
 "单价":0,
 "药品":错误,
 }]
 } 

但这是我从转换器中收到的:

 {
 " PO":" test21",
 "项目":[{
 " Id":" 000010",
 "产品":" XXXXX",
 "数量":" 5.000",
 " Discount_Percent":" 0.000",
 "单价": "",
 " Pharmaceutical":" false",
 }]
 } 

我不是Groovy专家,并尝试使用SAP注释中提供的内容使用以下groovy将" false"替换为false,但这没用:

导入com.sap.gateway.ip.core.customdev.util.Message;

 def消息processData(消息消息){
 def body = message.getBody(java.lang.String)as String;
 字符串输出= body.replaceAll(" \" false \""," \ $ 1");
 message.setBody(output);
 返回消息;
 }
 

有人可以帮我使用适用于我的常规脚本吗?

感谢您的时间。

阿尼班

6条回答
当学会了学习
2020-08-21 01:04 .采纳回答

嗨Anirban

这是一个Groovy脚本,用于清理JSON。 这样做无需使用正则表达式,并且仅更新需要更新的值。

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

 def消息processData(消息消息){

     def json = message.getBody(java.lang.String)
     def jsonSlurper =新的JsonSlurper()
     def对象= jsonSlurper.parseText(json)

     object.Items.each {项目->
        //将Pharmaceutical转换为布尔值
         item.Pharmaceutical =(item.Pharmaceutical =='false'?false:true)
        //将数量转换为整数
         item.Quantity = item.Quantity.toDouble()。intValue()
        //将Discount_Percent转换为整数
         item.Discount_Percent = item.Discount_Percent.toDouble()。intValue()
        //如果Unit_Price为空,则替换为零,否则转换为double
         如果(item.Unit_Price ==''){
             item.Unit_Price = 0
         }其他{
             item.Unit_Price = item.Unit_Price.toDouble()
         }
     }

     message.setBody(JsonOutput.toJson(object))
     返回讯息

 } 

将脚本添加到"脚本"步骤时,请在"脚本功能"字段中输入 not 。 该字段具有特定目的,没有描述脚本的作用。

给出您的输入,它将产生以下输出:

此致

Morten

一周热门 更多>