Я хочу получить поле Speci c для обновления с помощью сообщения dataweave / transform, сравнивая два объекта JSON. В настоящее время я получаю целые поля в объекте.
КОД:
%dw 1.0
%output application/json
%var old = {
"b":{
"c":"dog",
"d":"egg"
}
}
%var new = {
"b":{
"c":"dog",
"d":"eagle"
}
}
%function updateValue(newValue, newKey)
null when old."$newKey" == newValue and old."$newKey" != null otherwise {
newValuealue: newValue default null,
oldValue: old."$newKey" default null
}
%function compare(v)
v match {
:object -> $ mapObject ((v,k) -> {
(k): updateValue(v,k)
}),
default -> updateValue(v)
}
---
compare(new)
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:
"b":[{
"oldValue":{
"d":"egg"
},
"newValue":{
"d":"eagle"
}]
}
Текущая сборка: (Я не хочу включить "c": "собака", поскольку она не обновлена)
"b":[{
"oldValue":{
"c":"dog",
"d":"egg"
},
"newValue":{
"c":"dog"
"d":"eagle"
}]
}