首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jolt变换-基于id的元素分组

Jolt变换-基于id的元素分组
EN

Stack Overflow用户
提问于 2021-01-05 00:53:25
回答 1查看 79关注 0票数 0

我尝试基于id、name、type对json元素进行分组,如下所示:

输入:

代码语言:javascript
复制
[
  {
    "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"
  }
]

预期输出:

代码语言:javascript
复制
[
  {
    "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"
      }
    ]
  }
]

我已经尝试了下面的规范,但它没有给出预期的输出:

代码语言:javascript
复制
[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "subitemId": "subitems[&1].subitemId",
        "subitemName": "subitems[&1].subitemName",
        "*": "&"
      }
    }
  }
]

你能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2021-01-09 03:15:03

这个规范应该适用于你。

代码语言:javascript
复制
[
  {
    "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进行测试

试着通过操作来检查它的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65566558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档