[英]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.