#json #transform #apache-nifi #jolt
#json #трансформировать #apache-nifi #толчок
Вопрос:
Я новичок в преобразовании JOLT, я пытаюсь сгруппировать следующие объекты массива JSON на основе ACCOUNTNUMBER
и ZIP
, а затем объединить остальные атрибуты в соответствующие роли с помощью преобразования JOLT. Пожалуйста, помогите мне в написании спецификации JOLT для группировки объектов JSON, чтобы получить результат, приведенный ниже.
ВХОДНЫЕ ДАННЫЕ:
[
{
"ClientCode": "1234567",
"Relationships": [
{
"ENTITYID": 35056,
"COUNTYCODE": 19,
"ACCOUNTNUMBER": "1803",
"ROLETYPE": "Payer",
"ROLESEQNUM": 1,
"ZIP": 55111
},
{
"ENTITYID": 35056,
"COUNTYCODE": 19,
"ACCOUNTNUMBER": "1803",
"ROLETYPE": "Owner",
"ROLESEQNUM": 1,
"ZIP": 55111
},
{
"ENTITYID": 35056,
"COUNTYCODE": 19,
"ACCOUNTNUMBER": "1803",
"ROLETYPE": "Insured",
"ROLESEQNUM": 1,
"ZIP": 55111
},
{
"ENTITYID": 35056,
"COUNTYCODE": 19,
"ACCOUNTNUMBER": "1538",
"ROLETYPE": "Payer",
"ROLESEQNUM": 1,
"ZIP": 54333
},
{
"ENTITYID": 35056,
"COUNTYCODE": 19,
"ACCOUNTNUMBER": "1538",
"ROLETYPE": "Owner",
"ROLESEQNUM": 1,
"ZIP": 54333
},
{
"ENTITYID": 35056,
"COUNTYCODE": 19,
"ACCOUNTNUMBER": "1538",
"ROLETYPE": "Insured",
"ROLESEQNUM": 1,
"ZIP": 54333
}
]
}
]
ВЫХОДНОЙ СИГНАЛ:
[
{
"ClientCode": "1249612",
"Relationships": [
{
"ACCOUNTNUMBER": "1803",
"ZIP": 55111,
"roles": [
{
"ENTITYID": 35056,
"COUNTYCODE": 19,
"ROLETYPE": "Payer",
"ROLESEQNUM": 1
},
{
"ENTITYID": 35056,
"COUNTYCODE": 19,
"ROLETYPE": "Owner",
"ROLESEQNUM": 1
},
{
"ENTITYID": 35056,
"COUNTYCODE": 19,
"ROLETYPE": "Insured",
"ROLESEQNUM": 1
}
]
},
{
"ACCOUNTNUMBER": "1538",
"ZIP": 54333,
"roles": [
{
"ENTITYID": 35056,
"COUNTYCODE": 19,
"ROLETYPE": "Payer",
"ROLESEQNUM": 1
},
{
"ENTITYID": 35056,
"COUNTYCODE": 19,
"ROLETYPE": "Owner",
"ROLESEQNUM": 1
},
{
"ENTITYID": 35056,
"COUNTYCODE": 19,
"ROLETYPE": "Insured",
"ROLESEQNUM": 1
}
]
}
]
}
]
Ответ №1:
Вы можете выяснить это с помощью следующего преобразования сдвига
[
{
"operation": "shift",
"spec": {
"*": {
"ClientCode": "ClientCode",
"Relationships": {
"*": {
"ACCOUNTNUMBER": "amp;2.[amp;1].amp;",
"ZIP": "amp;2.[amp;1].amp;",
"*": "amp;2.[amp;1].roles[0].amp;"
}
}
}
}
}
]
где ключи со звездочками используются для ввода всех подобъектов, а amp;2
s представляют ключ, указанный на два уровня выше текущей позиции (например. Relationships
), [amp;1]
s объединяет один к одному элементы сформированных массивов, roles[0]
s обозначает помещение остальных элементов, отличных от выбранных нами, в новый массив вызывается roles
, а крайние правые амперсанды представляют самые внутренние пары ключ-значение.