我需要以下输入 json 的 jolt 规范,其中包含动态日期字段和项目数组。该 jolt 规范应该将此输入 json 转换为下面的输出 json。
输入Json:
"market": {
"2024-04-13": [
{
"code": "ABC",
"name": "Name1",
"date": "2024-04-13T00:00:00.000Z",
"rev": 100,
"sold": 1
}
],
"2024-04-14": [
{
"code": "DEF",
"name": "Name2",
"date": "2024-04-14T00:00:00.000Z",
"rev": 233.32,
"sold": 3
},
{
"code": "EFG",
"name": "DISCOUNT",
"date": "2024-04-14T00:00:00.000Z",
"rev": 300.05,
"sold": 1
},
{
"code": "MNO",
"name": "GROUP",
"date": "2024-04-14T00:00:00.000Z",
"rev": 45.33,
"sold": 3
}
],
"2024-04-15": [
{
"code": "POR",
"name": "TEST",
"date": "2024-04-15T00:00:00.000Z",
"rev": 100,
"sold": 1
}
]
}
}
输出json
{
"market": {
"DATE": [
{
"code": "ABC",
"name": "Name1",
"date": "2024-04-13T00:00:00.000Z",
"rev": 100,
"sold": 1
},
{
"code": "DEF",
"name": "Name2",
"date": "2024-04-14T00:00:00.000Z",
"rev": 233.32,
"sold": 3
},
{
"code": "EFG",
"name": "DISCOUNT",
"date": "2024-04-14T00:00:00.000Z",
"rev": 300.05,
"sold": 1
},
{
"code": "MNO",
"name": "GROUP",
"date": "2024-04-14T00:00:00.000Z",
"rev": 45.33,
"sold": 3
},
{
"code": "POR",
"name": "TEST",
"date": "2024-04-15T00:00:00.000Z",
"rev": 100,
"sold": 1
}
]
}
}
我尝试了下面的 Jolt 规范,但它没有给我准确的输出。它对前几个项目进行分组,但我需要它们分别类似于输出 json。
震动规格
[
{
"operation": "shift",
"spec": {
"market": {
"*": {
"*": {
"code": "market[&1].code",
"name": "market[&1].name",
"date": "market[&1].date",
"rev": "market[&1].rev",
"sold": "market[&1].sold"
}
}
}
}
}
]
您应该将这些日期与子索引值(0,1,2)相结合来分隔,以便能够区分所有子对象,例如
[
{
"operation": "shift",
"spec": {
"*": { //lhe layer for the "market"
"*": { //the layer for the arrays
"*": { //the layer for the indexes of the arrays
"*": "&3.&2_&1.&"
}
}
}
}
},
{ //arrange the key names of the outermost objects
"operation": "shift",
"spec": {
"*": {
"*": {
"*": "&2[#2].&"
}
}
}
}
]