如何使用 NiFi 将平面 JSON 转换为嵌套 JSON
How to transform a flat JSON to nested JSON using NiFi
输入JSON:
{
"type": "mbrInfo",
"csId": 123456789,
"insTS": "14-07-201911:55",
"seqId": 1234565,
"title": "Mr",
"fName": "Amit",
"mName": "",
"lName": "V",
"suffix": "Engg",
"lvlId": "P",
"lvlType": "LAC",
"acctStatus": "20",
"enrlDT": "2016-08-29",
"vrsnId": 1
}
预期输出JSON:
{
"type": "mbrInfo",
"csId": 123456789,
"insTS": "14-07-201911:55",
"seqId": 1234565,
"name" : [{
"title": "Mr",
"fName": "Amit",
"mName": "",
"lName": "V",
"suffix": "Engg"}],
"lvlId": "P",
"lvlType": "LAC",
"acctStatus": "20",
"enrlDT": "2016-08-29",
"vrsnId": 1
}.
目前我正在使用 JOLTtransformJSON 处理器,JOLT 规格为:
[
{
"operation": "shift",
"spec": {
"name": {
"$": "[#1]",
"@.title": "[#1].title",
"@.fName": "[#1].fName",
"@.mName": "[#1].mName",
"@.lName": "[#1].lName",
"@.suffix": "[#1].suffix"
}
}
}
]
但我得到的只是 NULL 或原始 JSON(具有差异规范)作为输出。
提前致谢。
目的是将所有名称字段放入一个包含对象的1元素数组中。此 JOLT 规范将它们放入 name
字段的对象中:
[
{
"operation": "shift",
"spec": {
"title": "name.title",
"fName": "name.fName",
"mName": "name.mName",
"lName": "name.lName",
"suffix": "name.suffix",
"*": "&"
}
}
]
...此规范将它们放入 name
字段的 1 元素数组中:
[
{
"operation": "shift",
"spec": {
"title": "name[0].title",
"fName": "name[0].fName",
"mName": "name[0].mName",
"lName": "name[0].lName",
"suffix": "name[0].suffix",
"*": "&"
}
}
]
我在输入中没有看到任何其他地方可以获取数组的索引,所以我只使用了 0
.
输入JSON:
{
"type": "mbrInfo",
"csId": 123456789,
"insTS": "14-07-201911:55",
"seqId": 1234565,
"title": "Mr",
"fName": "Amit",
"mName": "",
"lName": "V",
"suffix": "Engg",
"lvlId": "P",
"lvlType": "LAC",
"acctStatus": "20",
"enrlDT": "2016-08-29",
"vrsnId": 1
}
预期输出JSON:
{
"type": "mbrInfo",
"csId": 123456789,
"insTS": "14-07-201911:55",
"seqId": 1234565,
"name" : [{
"title": "Mr",
"fName": "Amit",
"mName": "",
"lName": "V",
"suffix": "Engg"}],
"lvlId": "P",
"lvlType": "LAC",
"acctStatus": "20",
"enrlDT": "2016-08-29",
"vrsnId": 1
}.
目前我正在使用 JOLTtransformJSON 处理器,JOLT 规格为:
[
{
"operation": "shift",
"spec": {
"name": {
"$": "[#1]",
"@.title": "[#1].title",
"@.fName": "[#1].fName",
"@.mName": "[#1].mName",
"@.lName": "[#1].lName",
"@.suffix": "[#1].suffix"
}
}
}
]
但我得到的只是 NULL 或原始 JSON(具有差异规范)作为输出。 提前致谢。
目的是将所有名称字段放入一个包含对象的1元素数组中。此 JOLT 规范将它们放入 name
字段的对象中:
[
{
"operation": "shift",
"spec": {
"title": "name.title",
"fName": "name.fName",
"mName": "name.mName",
"lName": "name.lName",
"suffix": "name.suffix",
"*": "&"
}
}
]
...此规范将它们放入 name
字段的 1 元素数组中:
[
{
"operation": "shift",
"spec": {
"title": "name[0].title",
"fName": "name[0].fName",
"mName": "name[0].mName",
"lName": "name[0].lName",
"suffix": "name[0].suffix",
"*": "&"
}
}
]
我在输入中没有看到任何其他地方可以获取数组的索引,所以我只使用了 0
.