jq无效的数字文字

时间:2017-07-08 11:31:25

标签: json jq

我有来自第三方系统的大量JSON,我想用jq预处理,但是我在编写查询时遇到了困难,测试用例如下:

$ cat test.json
{
  "a": "b",
  "c": "d",
  "e": {
         "1": {
            "f": "g",
            "h": "i"
          }
       }
}
$ cat test.json|jq .e.1.f
jq: error: Invalid numeric literal at EOF at line 1, column 3 (while parsing '.1.') at <top-level>, line 1:
.e.1.f

我如何将“g”作为我的输出?或者如何将1转换为“1”以便正确处理?

1 个答案:

答案 0 :(得分:4)

来自jq manual

  

您还可以使用如下语法查找对象的字段。[&#34; foo&#34;]   (上面的.foo是这个的简写版本,但仅适用于   类似于标识符的字符串)。

如果您想要原始输出,还需要引号并使用-r

jq -r '.e["1"].f' test.json