【发布时间】:2020-07-28 17:20:47
【问题描述】:
在FAQ for jq 中,它说:
如前一个 Q 中所述,jq 本身可用于在许多情况下将几乎有效的 JSON 转换为 JSON。 例如,可以使用 jq 删除“#”cmets。
但是,我似乎找不到任何有关如何使用 jq 实际执行此操作的文档。读取具有“#”cmets 的 JSON 文件的正确方法是什么?
【问题讨论】:
在FAQ for jq 中,它说:
如前一个 Q 中所述,jq 本身可用于在许多情况下将几乎有效的 JSON 转换为 JSON。 例如,可以使用 jq 删除“#”cmets。
但是,我似乎找不到任何有关如何使用 jq 实际执行此操作的文档。读取具有“#”cmets 的 JSON 文件的正确方法是什么?
【问题讨论】:
在您链接到 jq 常见问题解答后,我们可以找到准确的报价:
[...] 因此,您可以使用
jq -n -f FILENAME将几乎有效的 JSON 转换为 JSON。
这里就是这样。
一个几乎是 JSON 格式但具有 # cmets 的文件,将是有效的 jq 代码。因此,如果您有一个由 shell 命令创建的输入文件:
cat >input.notjson <<'EOF'
{
"This is a key": "This is a value" # this is a comment, which is why this is not JSON
}
EOF
...您可以将其作为 jq 程序运行:
jq -nf input.notjson
...作为输出:
{
"This is a key": "This is a value"
}
...此后可以作为输入提供给另一个任意 jq 程序(或 JSON 的其他使用者)。
【讨论】: