【问题标题】:denormalizing JSON with jq使用 jq 非规范化 JSON
【发布时间】:2015-10-15 12:26:26
【问题描述】:

我的 JSON 看起来像这样:

    [
      {
        "fields": {
          "versions": [
            {
              "id": "36143",
              "name": "ST card"
            },
            {
              "id": "36144",
              "description": "Acceptance test card",
              "name": "AT card"
            }
          ],
          "severity": {
            "value": "B-Serious",
            "id": "14231"
          }
        }
      },
      {
        "fields": {
          "versions": [
            {
              "id": "36145",
              "name": "ST card"
            }
          ],
          "severity": {
            "value": "C-Limited",
            "id": "14235"
          }
        }
      }
    ]

我想用 jq 把它转换成这个:

    [
      {
        "id": "36143",
        "name": "ST card"
        "value": "B-Serious"
      },
      {
        "id": "36144",
        "name": "AT card"
        "value": "B-Serious"
      },
      {
        "id": "36145",
        "name": "ST card"
        "value": "C-Limited"
      }
    ]

请注意,第一个对象有 2 个版本,并且严重性相同。我已经尝试过 jq 的 group_by 和 map 功能,但都不太成功。请帮忙:)

【问题讨论】:

    标签: json jq


    【解决方案1】:

    这应该可行。你不想在这里使用group_by,如果你想从多到少,你会这样做,我们会走另一条路。

    您正在将不同版本与相应的严重性相结合。以下是你可以做到的。

    map(.fields | (.versions[] | { id, name }) + { value: .severity.value })
    

    【讨论】:

    • 可爱优雅的解决方案。感谢您的快速响应
    猜你喜欢
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 2017-10-27
    • 2013-08-21
    • 2016-05-13
    • 2018-06-06
    • 2019-05-07
    • 2020-07-09
    相关资源
    最近更新 更多