【问题标题】:Parsing nested JSON and creating new keys with jq解析嵌套 JSON 并使用 jq 创建新键
【发布时间】:2021-11-12 03:21:34
【问题描述】:

我有一个包含数百个对象的 JSON 文件。每个对象都有 2 个键,其中嵌套对象\数组一个用于受让人,另一个用于史诗。

[
  {
    "id": 1111111111,
    "assignee": {
      "id": 1234,
      "firstName": "John",
      "lastName": "Doe",
      "email": "Doe@doe.com",   
    },
    "epics": [
      {
        "id": 111,
        "title": "Big Code Issues",
        "version": 16
      }
    ],
    "location": "Nerdville"
  }
]

来自当前的受理人密钥。我想创建两个新键 assigneeId 和 assigneeName。其中assigneeName 是firstName 和lastName 的组合。原来嵌套的assignee key可以丢弃。

从我想创建的史诗密钥和史诗 ID 的 id 值来自史诗。嵌套键中的其余键可以丢弃。

我对 jq 很陌生,但我想创建以下输出。

[
  {
    "id": 1111111111,
    "assigneeId": 1234,
    "assingeeName": "John Doe",
    "epicsid": 111,
    "location": "Nerdville"
  }
]

我可以使用 JQ 创建和删除键,但我无法迭代 JSON 文件以从嵌套键中获取值并将其放入新键中。我一直在运行基于不同命令的错误,但主要是“无法使用字符串“史诗”索引数组”。

任何帮助将不胜感激

【问题讨论】:

    标签: jq


    【解决方案1】:

    在用您的 JSON 解决一个非常小的技术问题后,以下会产生所需的结果:

    map( {id,
          assigneeId: .assignee.id,
          assigneeName: (.assignee | .firstName + " " + .lastName),
          epicsid: .epics[0].id,
          location } )
    

    如果“史诗”数组中包含多个项目,您可能希望修改它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 2021-05-12
      • 2019-01-02
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 2017-11-10
      相关资源
      最近更新 更多