[英]Read Array Value Using Dataweave in Mule
我试图在Mule中使用dataweave从传入的有效负载中读取特定的数据值。 我的有效负载示例如下所示:
{
"source": [
{
"uri": "entities/1R6xV",
"createdBy": "API_USER",
"createdTime": 1562504739146,
"attributes": {
"label": "000000000002659654",
"value": {
"Name": [
{
}
],
"Id": [
{
}
],
"Number": [
{
"type": "config/Types/Number/attributes/Number",
"ov": true,
"value": "000000000002659654",
"uri": "entities/1R6xV/attributes/Num/1ZtyT/Number/60pvN6"
}
]
}
}
}
]
}
如果我需要阅读“标签”,可以通过以下方式实现
label: payload.source.attributes.label
同样,如何读取属性>数字下的“值”。 它不适用于:
Value: payload.source.attributes.Number.value
我是Dataweave的新手。 请指教。
问题是点选择器(。)适用于对象和对象数组。 当将其应用于数组时,会将点选择器应用于该数组所有属于object类型的元素,并返回该结果。
让我们分开
payload.source
返回
[
{
"uri": "entities/1R6xV",
"createdBy": "API_USER",
"createdTime": 1562504739146,
"attributes": {
"label": "000000000002659654",
"value": {
"Name": [
{
}
],
"Id": [
{
}
],
"Number": [
{
"type": "config/Types/Number/attributes/Number",
"ov": true,
"value": "000000000002659654",
"uri": "entities/1R6xV/attributes/Num/1ZtyT/Number/60pvN6"
}
]
}
}
}
]
到目前为止,有效负载是一个对象,它返回的是数组的source的值
payload.source.attributes
返回
[
{
"label": "000000000002659654",
"value": {
"Name": [
{
}
],
"Id": [
{
}
],
"Number": [
{
"type": "config/Types/Number/attributes/Number",
"ov": true,
"value": "000000000002659654",
"uri": "entities/1R6xV/attributes/Num/1ZtyT/Number/60pvN6"
}
]
}
}
]
之所以可以正常工作,是因为payload.source的结果以对象数组结尾,因此它将对那些对象进行选择。
现在,当您执行
payload.source.attributes.value.Number
它返回
[
[
{
"type": "config/Types/Number/attributes/Number",
"ov": true,
"value": "000000000002659654",
"uri": "entities/1R6xV/attributes/Num/1ZtyT/Number/60pvN6"
}
]
]
那是一个数组的数组,在这里是坏掉的。
我的解决方案
您在这里有两种选择
使用展平功能
弄平(payload.source.attributes.value.Number)。价值
使用后代选择器
payload.source.attributes.value.Number..value
由于Number是一个数组,因此需要指定所需的索引。 在这种情况下,第零个元素:
Value: payload.source[0].attributes.value.Number[0].value
如果您有多个数字,它将看起来像这样:
%dw 1.0
%output application/json
---
values: payload.source[0].attributes.value.Number map {
value: $.value
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.