shell Json文件上的注解存在JQ问题

1cosmwyk  于 2022-11-25  发布在  Shell
关注(0)|答案(5)|浏览(222)

我正在使用JQ https://stedolan.github.io/jq/在bash中使用我的json,当我读取json时,它向我抛出了一个错误

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

因为我的json有一些评论

// comment
  "spawn": {}

有人看到我在寻找选项,但我找不到任何选项来解决这个问题。有什么解决办法吗?

zzoitvuj

zzoitvuj1#

JSON和jq都不支持JSON输入中的注解(通常意义上)。jq FAQ列出了许多可以用来删除注解的工具,包括jsonlint、json 5和any-json。我推荐一个可以充当过滤器的工具。
请访问https://github.com/stedolan/jq/wiki/FAQ#processing-not-quite-valid-json了解链接和更多详细信息。

xzlaal3s

xzlaal3s2#

删除它们; JSON不支持注解。
(JSON定义为here;您可以看到语法here的简短描述。)

fiei3ece

fiei3ece3#

我找到了https://github.com/sindresorhus/strip-json-comments-cli,它允许您执行以下操作:

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

kjthegm64#

可以使用sed剥离,例如删除以“//”开头的行:

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

sed是一个传递/流编辑器,在本例中,它不替换以“//"开始的行;“//”必须用反斜杠字符转义,因为sed将“/”用作分隔符。

mrwjdhj3

mrwjdhj35#

使用此sed,您可以删除:
1.空行
1.注解,即使格式为"key": "value" //my comment
最后,json将被输出,使用jq可以毫无问题地处理它。
sed '/^[[:blank:]]*#/d;s/\/\/.*//' my.json | jq '.<your_block>'
参考:https://unix.stackexchange.com/a/157619

相关问题