代码之家  ›  专栏  ›  技术社区  ›  zhuguowei

如何在一个命令中从对象的diff字段中提取一些值

  •  0
  • zhuguowei  · 技术社区  · 6 年前

    有这样的JSON数据

    ➜  ~ cat foo.json | jq
    {
      "data": {
        "foo": [
          {
            "table": "aaa"
          },
          {
            "table": "bbb"
          }
        ],
        "bar": [
          {
            "table": "ccc"
          },
          {
            "table": "ddd"
          }
        ]
      }
    }
    

    可以单独得到foo或bar的桌子,

    ➜  ~ cat foo.json | jq '.data.foo[].table'
    "aaa"
    "bbb"
    ➜  ~ cat foo.json | jq '.data.bar[].table'
    "ccc"
    "ddd"
    

    如何在一个命令中获取所有表值?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Jeff Mercado    6 年前

    使用逗号运算符。

    $ jq '.data["foo", "bar"][].table' foo.json
    

    $ jq '.data | .foo, .bar | .[].table' foo.json
    

    或者假设你想夺取 data 对象。

    $ jq '.data[][].table' foo.json
    
        2
  •  0
  •   peak    6 年前

    如果不关心“table”值出现在何处,并且要排除 null false 值:

    .. | .table? // empty
    

    如果你想包括 无效的 值:

    .. | objects | has("table") | .table