【问题标题】:Using jq, is it possible to return the same json object but only with selected fields/keys on multiple levels?使用 jq,是否可以返回相同的 json 对象,但只能在多个级别上使用选定的字段/键?
【发布时间】:2021-10-05 16:16:29
【问题描述】:

假设我有一个多级 json,如下所示:

{
  "array": [
    1,
    2,
    3
  ],
  "boolean": true,
  "color": "gold",
  "null": null,
  "number": 123,
  "object": {
    "a": "b",
    "c": "d"
  },
  "string": "Hello World"
}

jq 能否返回相同的 json,但包含我在多个级别上选择的字段?

例如

{
  "object": {
    "a": "b",
  },
  "string": "Hello World"
}

在这里,我选择了顶层的string 字段,以及object 字段中的a 字段。

编辑:在实践中,我想选择每个级别的多个字段,级别>4。

【问题讨论】:

    标签: json jq


    【解决方案1】:

    是的,这是可能的。我为此编写了一个函数并发布了here。你可以这样使用它:

    def pick(paths):
      . as $in
      | reduce path(paths) as $path (null;
        setpath($path; $in | getpath($path))
      );
    
    pick(.object.a, .string)
    

    Online demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      相关资源
      最近更新 更多