如何使用NiFi将平面JSON转换为嵌套JSON
输入JSON:如何使用NiFi将平面JSON转换为嵌套JSON,json,apache-nifi,jolt,Json,Apache Nifi,Jolt,输入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",
{
"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
}.
目前,我正在使用JOLT TransferMJSON处理器,其JOLT规格如下:
[
{
"operation": "shift",
"spec": {
"name": {
"$": "[#1]",
"@.title": "[#1].title",
"@.fName": "[#1].fName",
"@.mName": "[#1].mName",
"@.lName": "[#1].lName",
"@.suffix": "[#1].suffix"
}
}
}
]
但我得到的不是空值,就是以diff spec作为输出的原始JSON。
提前感谢。旨在将所有名称字段放入包含对象的1元素数组中。此震动规范将它们放入名称字段的对象中: …此规范将它们放入名称字段的1元素数组中:
我在输入中看不到任何其他位置可以将索引放入数组,所以我只使用了0。Oscar,如果您仔细观察,您会发现输入json是一个平面json,而输出json是嵌套的。@mattyb,您能帮我回答这个问题吗
[
{
"operation": "shift",
"spec": {
"title": "name.title",
"fName": "name.fName",
"mName": "name.mName",
"lName": "name.lName",
"suffix": "name.suffix",
"*": "&"
}
}
]
[
{
"operation": "shift",
"spec": {
"title": "name[0].title",
"fName": "name[0].fName",
"mName": "name[0].mName",
"lName": "name[0].lName",
"suffix": "name[0].suffix",
"*": "&"
}
}
]