我有一個輸入有效負載(json 陣列),需要用特定索引中的鍵值來豐富。我的要求是將附加鍵值(對所有物件都相同)放在索引 1 處,所以我設法這樣做:
輸入有效載荷:
[
{
"key1": "value1",
"key3": "value3",
"key4": "value4",
"key5": "value5"
},
{
"key1": "value1",
"key3": "value3",
"key4": "value4",
"key5": "value5"
},
{
"key1": "value1",
"key3": "value3",
"key4": "value4",
"key5": "value5"
}
]
腳本:
%dw 2.0
output application/json
---
payload map (
($)[&0] {"key2": "value2"} ($ - "key1")
)
輸出:
[
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4",
"key5": "value5"
},
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4",
"key5": "value5"
},
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4",
"key5": "value5"
}
]
我的問題是:如何動態地實作這一點?
謝謝,馬可
uj5u.com熱心網友回復:
請嘗試以下腳本。我們宣告了一個變數并將其添加到輸入陣列的每個物件中。如果您從有效負載或任何資源中獲取此鍵值,您也可以根據要求在 set 變數中宣告此變數。
%dw 2.0
output application/json
var keyValue = {
"key2": "value2"
}
---
payload map ((item, index) -> (item) keyValue ) map ((item1, index) ->(item1) mapObject ((value, key, index) ->((key):value ) ) orderBy ((value, key) ->value ))
另一個選項,您只需要給出一個索引位置(.g, 2 or 3 or 4 as per equirement)來添加鍵值
%dw 2.0
output application/json
fun addKeyAtPosition(in : Object, position : Number,keyValue : Object)=(
sizeOf(in) match {
case size if(position <=0 ) -> (keyValue in)
case size if(position > size) -> (in keyValue)
case size if(position <= size) -> (in mapObject ((value, key, index) ->
(if ((index 1) == position)
keyValue ((key): value)
else ((key): value))
))
else -> keyValue in
}
)
var keyValue= {
"key2": "value2"
}
---
payload map ((item, index) ->
addKeyAtPosition(item,2,keyValue) // here we are passing the index as 2
)
uj5u.com熱心網友回復:
- 首先保留有效負載的鍵,以便我們可以從第二個元素互動到 n-1
- k[1 to -1] 因為你想在第一個索引位置插入忽略第一個關鍵元素
德國之聲
%dw 2.0
output application/json
var k=keysOf(payload[0])
---
payload map(item,index)-> (
[(item[&0])] [{"key2": "value2"}] (k[1 to -1] map ($): (item[$]))
) reduce($$ $)
Alternatitevely 您可以使用MinusMinus洗掉元素
%dw 2.0
output application/json
---
payload map (
($)[&0] {"key2": "value2"} ($ -- (($)[&0]))
)
輸出
[
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4",
"key5": "value5"
},
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4",
"key5": "value5"
},
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4",
"key5": "value5"
}
]
uj5u.com熱心網友回復:
首先,如果密鑰已經存在,我會洗掉它,然后動態添加新的密鑰對。如果您確定輸入元素中以前不存在該鍵,則可以省略洗掉。
%dw 2.0
output application/json
var key="key2"
var value="value2"
---
payload map (
$ - key {(key): value}
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/435533.html
下一篇:物件屬性的深度計數
