json - 如何使用 jq 从子数组创建具有任意键的对象?

标签 json jq

请随意编辑标题,我不知道如何最好地表达它:)。

例如,我有一个 JSON,它看起来像这样:

{
  "things": [
     {
        "name": "foo",
        "params": [
           {
             "type": "t1",
              "key": "key1",
              "value": "val1"
           },
           {
              "type": "t1",
              "key": "category",
              "value": "thefoocategory"
           }
        ]
      },
      {
        "name": "bar",
        "params": [
           {
             "type": "t1",
             "key": "key1",
             "value": "val1"
           },
           {
             "type": "t1",
             "key": "category",
             "value": "thebarcategory"
           }
        ]
     }
  ]
}

我想要实现的是输出看起来像
[
  {
    name: "foo",
    category: "thefoocategory"
  },
  {
    name: "bar",
    category: "thebarcategory"
  }
]

我可以很容易地使用 jq ' .things | .[] | .name' 提取名称

我还可以使用 jq ' .things | .[] | .params | .[] | select(.key == "category") | .value' 提取类别

但我无法将它们结合起来。

任何帮助表示赞赏

最佳答案

这实际上是相对简单的:

.things | .[] | {name: .name, category: .params | .[] | select(.key=="category") | .value }

关于json - 如何使用 jq 从子数组创建具有任意键的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37864617/

相关文章:

json - 如何使用 jq 合并来自 2 个文件的 2 个 JSON 对象?

python - 在 SqlAlchemy @validates 装饰器中返回自定义消息

json - 使用 jq 返回多个元素?

java - 使用键作为值反序列化 Jackson

json - 将JSON对象作为文档批量加载到Elasticsearch中

linux - 将 "jq"输出管道到 "less"时如何保持颜色?

json - 使用 jq 从 ElasticSearch 结果中的 _source 文档中提取数据

python - 如何将 Tinder data.json 转换为 CSV

jquery - 查询Json并传递变量?

ruby - 如何在 ruby​​ on rails 中创建 json 对象?