无法提取json字段的内容

时间:2018-07-13 12:41:33

标签: bash jq

我有一个(不太复杂的)json文件,我需要使用bash提取其内容。我想使用jq进行处理,这应该很简单。问题是我在处理中遇到了一个奇怪的错误,我不知道该怎么解决(因为我不知道是什么原因引起的)。

给我带来麻烦的最少样本:

{
  "E23763": {
    "data": "information"
  }
}

如果我只运行jq进行漂亮打印,它就可以工作:

$ cat test.json | jq .
{
  "E23763": {
    "data": "information"
  }
}

但是,如果我尝试提取第一个字段,则会严重失败:

$ cat test.json | jq .E23763
jq: error: Invalid numeric literal at EOF at line 1, column 7 (while parsing '.E23763') at <top-level>, line 1:
.E23763
jq: 1 compile error

预期结果是:

{
  "data": "information"
}

有人发现了类似的问题吗?为什么当他真正在研究字符串时,为什么抱怨数字文字?

报价似乎无关紧要,同样的错误。

1 个答案:

答案 0 :(得分:2)

请在GitHub上参考此问题,此处发布了许多回复,可能会帮助您解决问题:https://github.com/stedolan/jq/issues/1526

但是,我将在此处发布一种解决方案:

jq '.["E23763"]' test.json

@Inian所说的另一种解决方案是:

jq '."E23763"' json

在没有[]的情况下,这是正确的解决方案,但是请尝试两者

基本上,解析器有错误,将.E视为数字的开头。