JQ 对 Json 文件的评论提出问题

JQ issues with comments on Json file

我正在使用 JQ https://stedolan.github.io/jq/ 和我的 json 在 bash 中工作,当我阅读 json 时抛出一个错误

   parse error: Invalid numeric literal at line 2, column 5=

由于我的 json 有一些评论

  // comment
  "spawn": {}

有人看到我在寻找选项,但找不到任何解决问题的选项。知道如何解决吗?

删除它们; JSON不支持评论。

(JSON 定义为 here; you can see a briefer description of the grammar here。)

JSON 因此 jq 不支持 JSON 输入中的注释(通常意义上的)。 jq 常见问题解答列出了一些可用于删除评论的工具,包括 jsonlint、json5 和 any-json。我推荐一个可以充当过滤器的。

有关链接和更多详细信息,请参阅 https://github.com/stedolan/jq/wiki/FAQ#processing-not-quite-valid-json

我发现 https://github.com/sindresorhus/strip-json-comments-cli 允许您执行以下操作:

cat my_json_with_comments.json | strip-json-comments | jq  .

可以使用 sed 删除,例如删除以 '//' 开头的行:

cat test.json | sed 's/^ *\/\/.*//' | jq <>commands>

sed 是一个 pass-through/stream 编辑器,在这种情况下,它不会用任何内容 ( // ) 替换以 '//' 开头的行; “//”必须使用反斜杠字符进行转义,因为“/”被 sed 用作定界符。