все. Я пытаюсь изменить значение поля в элементе массива в json с условием: если значение «field1» равно «value1», то изменить значение поля «changethisfield» на «new_value». Текущая полезная нагрузка:
{
"message": [
{
"field1": "value1",
"field2": "value2",
"changethisfield": ""
},
{
"field1": "value3",
"field2": "value4",
"changethisfield": ""
}
]
}
Код данных:
%dw 2.0
output application/json
var itemValue = payload.message map (item) -> {
(item mapObject (value, key, index) -> {
((key): value) if (key as String != 'changethisfield'),
(changethisfield: "new_value") if (key as String == 'changethisfield')
})
}
---
{
"message": {
item: itemValue
}
}
Но этот код изменяет значение во всех элементах массива ( текущий вывод ):
{
"message": {
"item": [
{
"field1": "value1",
"field2": "value2",
"changethisfield": "new_value"
},
{
"field1": "value3",
"field2": "value4",
"changethisfield": "new_value"
}
]
}
}
Желаемый вывод (только значение элемента «changethisfield», где «field1» содержит «value1», должно измениться на «new_value»):
{
"message": {
"item": [
{
"field1": "value1",
"field2": "value2",
"changethisfield": "new_value"
},
{
"field1": "value3",
"field2": "value4",
"changethisfield": ""
}
]
}
}
Пожалуйста, помогите разобраться как я могу сделать условия в элементах массива и решить эту задачу. Спасибо!