Mule 在JSON hashmap中查找特定数据
我需要在不同的json有效负载中查找AccountNo字段值。AccountNo可以存在于json负载中的任何级别。我需要检查AccountNo是否存在,然后在logger中打印值 我正在使用下面的enricher,但我想在mule中迭代Hashmap,检查AccountNo key是否存在,然后获取值 另外,请建议是否有其他方法来解析json本身。 在xpath中“//AccountNo”将在整个xml文档中查找AccountNo。我想要类似的东西Mule 在JSON hashmap中查找特定数据,mule,mule-studio,mule-component,mule-el,Mule,Mule Studio,Mule Component,Mule El,我需要在不同的json有效负载中查找AccountNo字段值。AccountNo可以存在于json负载中的任何级别。我需要检查AccountNo是否存在,然后在logger中打印值 我正在使用下面的enricher,但我想在mule中迭代Hashmap,检查AccountNo key是否存在,然后获取值 另外,请建议是否有其他方法来解析json本身。 在xpath中“//AccountNo”将在整个xml文档中查找AccountNo。我想要类似的东西 请查找下面的json有效负载示例 { "
请查找下面的json有效负载示例
{
"Account": {
"AccountName": "John",
"AccountNo": "4234324"
}
}
{
"Order": {
"OrderId": "34234242",
"ServiceOrder": [
{
"AccountNo": "231232",
"ServiceOrderId": "54654698787"
},
{
"AccountNo": "231232",
"ServiceOrderId": "78979879797"
}
]
}
因为它是一个hashmap
您可以使用yourmap.get(keyvalue)
获取值
<logger message="#[flowVars.myJsonMap.yourkey?]" level="INFO" doc:name="Logger"/>
根据您的问题,我假设:
- 您的负载包含嵌套的映射和列表以及其他对象
- AccountNo可能存在于任何级别的有效负载
//recursively parse any Map or List in myObject
//and store AccountNo objects accountNoList
def parseObject(myObject, accountNoList) {
if (myObject instanceof java.util.Map) {
//if Map, check for AccountNo field
if(myObject.AccountNo != null){
accountNoList.add(myObject.AccountNo)
}
//seek for more AccountNo in Map
for(e in myObject) {
parseObject(e.value, accountNoList)
}
} else if (myObject instanceof java.lang.Iterable) {
//if Iterable, parse each values
for (value in myObject) {
parseObject(value, accountNoList)
}
}
}
myJsonPayload = message.getInvocationProperty('myJsonPayload')
myAccountNoList = [] //init an empty list which will be filled
parseObject(myJsonPayload, myAccountNoList)
return myAccountNoList
然后只需使用记录器。如果您不处理大量json数据,只需使用JSONToXMLTransformer将json转换为XMl,然后使用XPATH在文档中的任何位置查找数据。通过这种方式,您可以避免编写任何额外的代码来解析json文件。我可以使用java做同样的事情吗?使用嵌套的json标记,我发现json-to-xml transformer不会返回完整的负载。您可以在重复“account”标记的地方提供json负载吗??我过去曾使用dataweave递归解析json。我将检查相同的代码是否适用于您的有效负载。我在上面的原始注释中添加了示例有效负载。谢谢。在这种情况下,我不知道我的密钥将嵌套在哪里。请在我的原始评论中找到上面的示例有效负载。