【问题标题】:Removing "#" comments with JQ用 JQ 删除“#”注释
【发布时间】:2020-07-28 17:20:47
【问题描述】:

FAQ for jq 中,它说:

如前一个 Q 中所述,jq 本身可用于在许多情况下将几乎有效的 JSON 转换为 JSON。 例如,可以使用 jq 删除“#”cmets。

但是,我似乎找不到任何有关如何使用 jq 实际执行此操作的文档。读取具有“#”cmets 的 JSON 文件的正确方法是什么?

【问题讨论】:

    标签: json linux bash jq


    【解决方案1】:

    总结

    在您链接到 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 的其他使用者)。

    【讨论】:

    • 仅供参考,使用 jq 删除 cmets 有一个问题:jq 程序不能太大。所以FAQ中提到的其他解决方案(例如hjson,any-json)值得了解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 2016-07-25
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    相关资源
    最近更新 更多