У меня есть проблема, которую я пытаюсь решить в Nifi, и мне бы очень хотелось, чтобы вы помогли найти решение. Я подумал об использовании преобразования Jolt для достижения этого, но открыт для любых других предложений
У меня есть массив Json, который выглядит следующим образом:
[
{
"val1": "AAA",
"val2": "",
"val3": "111",
"val4": "red"
},
{
"val1": "BBB",
"val2": "2",
"val3": "222",
"val4": "blue"
},
{
"val1": "CCC",
"val2": "",
"val3": "333",
"val4": "orange"
},
{
"val1": "DDD",
"val2": "2",
"val3": "4444",
"val4": "green"
}
]
, и я написал JoltSpe c
[
{
"operation": "shift",
"spec": {
"*": {
"val1": "&",
"val2": "&",
"val3": "&"
},
"0": {
"val4": "&"
}
}
}
]
, которые преобразуют массив json в:
{
"val4" : "red",
"val1" : [ "BBB", "CCC", "DDD" ],
"val2" : [ "2", "", "2" ],
"val3" : [ "222", "333", "4444" ]
}
Однако это не совсем тот результат, который я ищу. Мне нужно, чтобы val2 было только одним значением (я хочу игнорировать все вхождения пустой строки и в основном выбирать первую доступную непустую строку.
val2 может либо пустая строка "", либо некоторая повторяющаяся строка, например "2" (здесь я использую 2 в качестве примера, но val2 может быть любым, например 3, 123 или 345 и т. д. c, но если это 123, все вхождения of val2 будет 123)
Пример желаемого результата
{
"val4" : "red",
"val1" : [ "BBB", "CCC", "DDD" ],
"val2" : "2",
"val3" : [ "222", "333", "4444" ]
}
Любая помощь будет принята с благодарностью. Заранее спасибо