这是一个关于nifi jolt转换的问题,该转换用于基于键属性将json数组分组到新数组中

这是一个关于nifi jolt转换的问题,该转换用于基于键属性将json数组分组到新数组中,json,transform,apache-nifi,jolt,Json,Transform,Apache Nifi,Jolt,我不熟悉JOLT转换,我尝试将以下JSON数组分组 对象基于ACCOUNTNUMBER和ZIP,然后聚合 属性转换为各自的角色。 请帮助我编写JOLT规范,将JSON对象分组以获得 输出如下 输入: [ { “客户代码”:“1234567”, “关系”:[ { “实体ID”:35056, “COUNTYCODE”:19, “帐号”:“1803”, “角色类型”:“付款人”, “ROLESEQNUM”:1, “ZIP”:55111 }, { “实体ID”:35056, “COUNTYCODE”:1

我不熟悉JOLT转换,我尝试将以下JSON数组分组 对象基于
ACCOUNTNUMBER
ZIP
,然后聚合 属性转换为各自的角色。 请帮助我编写JOLT规范,将JSON对象分组以获得 输出如下

输入:

[
{
“客户代码”:“1234567”,
“关系”:[
{
“实体ID”:35056,
“COUNTYCODE”:19,
“帐号”:“1803”,
“角色类型”:“付款人”,
“ROLESEQNUM”:1,
“ZIP”:55111
},
{
“实体ID”:35056,
“COUNTYCODE”:19,
“帐号”:“1803”,
“角色类型”:“所有者”,
“ROLESEQNUM”:1,
“ZIP”:55111
},
{
“实体ID”:35056,
“COUNTYCODE”:19,
“帐号”:“1803”,
“角色类型”:“被保险人”,
“ROLESEQNUM”:1,
“ZIP”:55111
},
{
“实体ID”:35056,
“COUNTYCODE”:19,
“帐号”:“1538”,
“角色类型”:“付款人”,
“ROLESEQNUM”:1,
“ZIP”:54333
},
{
“实体ID”:35056,
“COUNTYCODE”:19,
“帐号”:“1538”,
“角色类型”:“所有者”,
“ROLESEQNUM”:1,
“ZIP”:54333
},
{
“实体ID”:35056,
“COUNTYCODE”:19,
“帐号”:“1538”,
“角色类型”:“被保险人”,
“ROLESEQNUM”:1,
“ZIP”:54333
}
]
}
]
输出:

[
{
“客户代码”:“1249612”,
“关系”:[
{
“帐号”:“1803”,
“ZIP”:55111,
“角色”:[
{
“实体ID”:35056,
“COUNTYCODE”:19,
“角色类型”:“付款人”,
“ROLESEQNUM”:1
},
{
“实体ID”:35056,
“COUNTYCODE”:19,
“角色类型”:“所有者”,
“ROLESEQNUM”:1
},
{
“实体ID”:35056,
“COUNTYCODE”:19,
“角色类型”:“被保险人”,
“ROLESEQNUM”:1
}
]
},
{
“帐号”:“1538”,
“ZIP”:54333,
“角色”:[
{
“实体ID”:35056,
“COUNTYCODE”:19,
“角色类型”:“付款人”,
“ROLESEQNUM”:1
},
{
“实体ID”:35056,
“COUNTYCODE”:19,
“角色类型”:“所有者”,
“ROLESEQNUM”:1
},
{
“实体ID”:35056,
“COUNTYCODE”:19,
“角色类型”:“被保险人”,
“ROLESEQNUM”:1
}
]
}
]
}
]

您可以通过下面的shift转换来解决这个问题

[
{
“操作”:“移位”,
“规格”:{
"*": {
“客户端代码”:“客户端代码”,
“关系”:{
"*": {
“帐号”:“&2.[&1]&”,
“ZIP”:“&2.[&1]。&”,
*“:”&2.[&1]。角色[0]。&”
}
}
}
}
}
]
其中,星号键用于产生每个子对象,
&2
s表示从当前位置向上两级声明的键(例如,
关系
),
[&1]
s将所形成数组的元素一对一地组合起来,
角色[0]
s表示将所选元素以外的其他元素放入名为
角色的新数组中,最右边的符号表示最里面的键值对