使用下面的 groovy 脚本,我可以删除特定字段的双引号,但如果结构是数组,则此脚本不起作用。请帮助我。
输入:
[
{
"SalesOrder": "02",
"Dealer": "1",
"Purchase": "B",
"CreationDate": "2021-08-17",
"Status": "Open",
"Overall": "A",
"OverallTotal": "A",
"Amount": "1000.0"
},
{
"SalesOrder": "03",
"Dealer": "2",
"Purchase": "B",
"CreationDate": "2021-08-17",
"Status": "Open",
"Overall": "A",
"OverallTotal": "A",
"Amount": "1000.0"
},
{
"SalesOrder": "04",
"Dealer": "3",
"Purchase": "B",
"CreationDate": "2021-08-17",
"Status": "Open",
"Overall": "A",
"OverallTotal": "A",
"Amount": "1000.0"
}
]
Groovy 脚本:`
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import groovy.json.*
import java.util.*;
def Message processData(Message message)
{
def body = message.getBody(java.lang.String) as String;
def jsonDataObject = jsonSlurper.parseText(body);
if(jsonDataObject.Amount!=null)
{
jsonDataObject.Amount = convertToFloat(jsonDataObject.Amount);
}
message.setBody(new JsonBuilder(jsonDataObject).toPrettyString())
return message
static Object convertToFloat(Object inputValue){
if(inputValue.isNumber()){
return inputValue.toFloat();
}else{
return inputValue;
}
}
预期的输出是,对于金额字段,双引号应该被删除,然后显示输出。下面是输出代码。
输出:
[
{
"SalesOrder": "02",
"Dealer": "1",
"Purchase": "B",
"CreationDate": "2021-08-17",
"Status": "Open",
"Overall": "A",
"OverallTotal": "A",
"Amount": 1000.0
},
{
"SalesOrder": "03",
"Dealer": "2",
"Purchase": "B",
"CreationDate": "2021-08-17",
"Status": "Open",
"Overall": "A",
"OverallTotal": "A",
"Amount": 1000.0
},
{
"SalesOrder": "04",
"Dealer": "3",
"Purchase": "B",
"CreationDate": "2021-08-17",
"Status": "Open",
"Overall": "A",
"OverallTotal": "A",
"Amount": 1000.0
}
]