使用 Dataweave 为设置变量组件过滤有效负载
Filter Payload with Dataweave for a Set Variable component
对于 Mulesoft 4.2 Set Variable 组件,我想分配一个简单的字符串值,该字符串值是从传入的 JSON 有效负载的单个特定记录中提取的。
在我的例子中,仅从以下示例的 'country' 字段中获取值:
[
{
"salesID": "4404Bob Builder210032011-02-18T15:52:21+0.00",
"id": "4404",
"firstName": "Bob",
"lastName": "Builder",
"address": "181 Construction Road, Adelaide, NSW",
"postal": "21003",
"country": "New Zealand",
"creationDate": "2011-02-18T15:52:21+0.00",
"accountType": "personal",
"miles": 17469
}
]
一个非动态的方法是这样的:
payload[0].country
我认为最好的方法是使用过滤器功能。下面的选项给了我整个对象,但我只想要国家字段。
payload filter ($.id == "4404")
Map 函数似乎有点矫枉过正,因为我只想要值本身。我一定是缺少获取国家/地区字段的语法。
您可以尝试以下任何选项吗:
1) (payload groupBy ((item, index) -> item.id))["4404"][0].country
要么
2) (payload map ((item, index) -> if(item.id == "4404") item.country else ""))[0]
谢谢,
阿希什
我做了更多调查,这个解决方案让我足够接近我想要的:
对于我使用过滤器的代码示例,我必须将整个表达式括在括号中,然后我可以使用点引用访问该字段,
但下面的代码将字符串值作为数组中的单个记录给出:
(payload filter ($.id == "4404")).country
[
"New Zealand"
]
在我的例子中,我知道过滤后的有效负载只会返回一个结果,所以我可以只获取字符串值:
(payload filter ($.id == "4404"))[0].country
enter image description here
对于 Mulesoft 4.2 Set Variable 组件,我想分配一个简单的字符串值,该字符串值是从传入的 JSON 有效负载的单个特定记录中提取的。
在我的例子中,仅从以下示例的 'country' 字段中获取值:
[
{
"salesID": "4404Bob Builder210032011-02-18T15:52:21+0.00",
"id": "4404",
"firstName": "Bob",
"lastName": "Builder",
"address": "181 Construction Road, Adelaide, NSW",
"postal": "21003",
"country": "New Zealand",
"creationDate": "2011-02-18T15:52:21+0.00",
"accountType": "personal",
"miles": 17469
}
]
一个非动态的方法是这样的:
payload[0].country
我认为最好的方法是使用过滤器功能。下面的选项给了我整个对象,但我只想要国家字段。
payload filter ($.id == "4404")
Map 函数似乎有点矫枉过正,因为我只想要值本身。我一定是缺少获取国家/地区字段的语法。
您可以尝试以下任何选项吗:
1) (payload groupBy ((item, index) -> item.id))["4404"][0].country 要么 2) (payload map ((item, index) -> if(item.id == "4404") item.country else ""))[0]
谢谢, 阿希什
我做了更多调查,这个解决方案让我足够接近我想要的:
对于我使用过滤器的代码示例,我必须将整个表达式括在括号中,然后我可以使用点引用访问该字段, 但下面的代码将字符串值作为数组中的单个记录给出:
(payload filter ($.id == "4404")).country
[
"New Zealand"
]
在我的例子中,我知道过滤后的有效负载只会返回一个结果,所以我可以只获取字符串值:
(payload filter ($.id == "4404"))[0].country
enter image description here