我尝试基于id、name、type对json元素进行分组,如下所示:
输入:
[
{
"itemid": "1",
"itemName": "coco",
"itemType": "brg",
"subitemId": "444",
"subitemName": "INDICATIVE"
},
{
"itemid": "1",
"itemName": "coco",
"itemType": "brg",
"subitemId": "333",
"subitemName": "BRGS"
},
{
"itemid": "2",
"itemName": "limk",
"itemType": "cmds",
"subitemId": "456",
"subitemName": "NMPS"
}
]预期输出:
[
{
"itemid": "1",
"itemName": "coco",
"itemType": "brg",
"subitems": [
{
"subitemId": "444",
"subitemName": "INDICATIVE"
},
{
"subitemId": "333",
"subitemName": "BRGS"
}
]
},
{
"itemid": "2",
"itemName": "limk",
"itemType": "cmds",
"subitems": [
{
"subitemId": "456",
"subitemName": "NMPS"
}
]
}
]我已经尝试了下面的规范,但它没有给出预期的输出:
[
{
"operation": "shift",
"spec": {
"*": {
"subitemId": "subitems[&1].subitemId",
"subitemName": "subitems[&1].subitemName",
"*": "&"
}
}
}
]你能帮帮我吗?
发布于 2021-01-09 03:15:03
这个规范应该适用于你。
[
{
"operation": "modify-default-beta",
"spec": {
"*": {
"comp_id": "=concat(@(1,itemid),'_', @(1,itemName), '_', @(1,itemType))"
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"*": "@(1,comp_id).&[]"
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"*": "[#2].&",
"comp_id": null
}
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"*": {
"itemid": "=firstElement(@(1,itemid))",
"itemName": "=firstElement(@(1,itemName))",
"itemType": "=firstElement(@(1,itemType))"
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"*": "[&1].&",
"subitemId": {
"*": "[&2].subitems[&].subitemId"
},
"subitemName": {
"*": "[&2].subitems[&].subitemName"
}
}
}
}
]使用https://jolt-demo.appspot.com进行测试
试着通过操作来检查它的操作。
https://stackoverflow.com/questions/65566558
复制相似问题