转换嵌套的json对象

时间:2018-10-10 20:26:57

标签: json object merge jq

我有一个嵌套的json对象,像这样:

{
  "results": {
    "category_a": {
      "types": {
        "type_a": {},
        "type_b": {},
        "type_c": {}
      }
    },
    "category_b": {
      "types": {
        "type_y": {},
        "type_z": {}
      }
    }
  }
}

我想将其压缩为一个更简单的嵌套对象:

{
  "category_a": [
    "type_a",
    "type_b",
    "type_c"
  ],
  "category_b": [
    "type_y",
    "type_z"
  ]
}

这是我到目前为止所拥有的,与我想要的接近:

.results
| to_entries[]
| {
    (.key): [
      .value.types | keys[]
    ]
  }

除了输出是面向行的,而不是单个对象:

{
  "category_a": [
    "type_a",
    "type_b",
    "type_c"
  ]
}
{
  "category_b": [
    "type_y",
    "type_z"
  ]
}

如何将这两个json对象组合为一个?我需要以不同的方式来处理转换吗?

1 个答案:

答案 0 :(得分:1)

以程序为起点,您只需将单独的对象包装在方括号中,然后使用add

.results
| [to_entries[] | { (.key): [ .value.types | keys[] ] } ]
| add