JOLT добавить значение, если ключ не существует
У меня проблемы с JOLT, я постараюсь быть тупым.
вход
{
"Root": [{
"key1": "value1",
"key2": "value2"
},
{
"key1": "value1"
}
]
}
Как видите, у меня есть массив, 2 объекта внутри. Это мой удар
тряска
[{
"operation": "shift",
"spec": {
"Root": {
"*": {
"key1": "newkey1",
"key2": "newkey2"
}
}
}
}]
и вывод явно такой:
Выход
{
"newkey1": ["value1", "value1"],
"newkey2": "value2"
}
Теперь мой вопрос: возможно ли добавить пустое значение в массив "newkey2", когда ключ не существует во входном json? Мне нужно что-то вроде этого:
{
"newkey1": ["value1", "value1"],
"newkey2": ["", "value2"]
}
2 ответа
"Исправьте" данные, прежде чем у вас есть сдвиг, сделайте это.
[
{
"operation": "modify-default-beta",
"spec": {
"Root": {
"*": {
// Assuming you know the keys
// you expect to be in the data,
// add default values if they don't
// exist.
"key1": "",
"key2": ""
}
}
}
},
{
"operation": "shift",
"spec": {
"Root": {
"*": {
// Now "shift" to the new format
// "knowing" that all the keys will
// have at least default values.
// Also, make "newkey1" always be
// an array.
"key1": "newkey1[]",
"key2": "newkey2[]"
}
}
}
}
]
Вы можете использовать
~
оператор в спецификации преобразования изменения , чтобы сделать его по умолчанию на основе его существования, например
[
{
"operation": "modify-default-beta",
"spec": {
"Root": {
"*": {
"~key2": "" // if "key2" does not exist or is null, then default it to be ""
}
}
}
},
{
"operation": "shift",
"spec": {
"Root": {
"*": {
"*": "new&" // accumulate values under common keys while prefixing their names with "new"
}
}
}
}
]