0

有这样的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"

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

4

2 回答 2

1

使用逗号运算符。

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

或者

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

或者假设您想获取data对象的任何属性。

$ jq '.data[][].table' foo.json
于 2018-08-06T14:28:45.543 回答
0

如果您不关心“表”值出现在哪里,并且您想排除nullfalse值:

.. | .table? // empty

如果要包含nullfalse值:

.. | objects | has("table") | .table
于 2018-08-06T14:39:38.000 回答