java - 从其他合法的 json 中剥离类似 C 的注释

标签 java json parsing

假设您有一个包含 C 风格注释的 json 文件

{
  "foo": {
    "default_level": "debug",
    // A comment
    "impl": "xyz"
  },
  "bar": [
    {
      /*This is a comment*/
      "format": "%l%d %c ….",
      "rotation": "daily, 1_000_000",
    }
  ]
}

在 json 被反序列化之前,使用 Java 去除这些注释的最简单方法是什么?假设仅支持单行 // 和多行 /**/ 注释。

最终,我想读取同一文件的 String 表示形式,但没有注释:

{
  "foo": {
    "default_level": "debug",
    "impl": "xyz"
  },
  "bar": [
    {
      "format": "%l%d %c ….",
      "rotation": "daily, 1_000_000",
    }
  ]
}

最佳答案

将其作为 Javascript 处理可能会更好,因为 JSON 几乎是 Javascript 的子集,而 JSON + C 类注释实际上几乎是 Javascript 的子集。尝试:

Looking to remove comments from a large amount of javascript files

基本上 - 只需首先通过您最喜欢的缩小器运行它即可。请注意JSON is not a strict subset of Javascript所以你需要将近乎合法的 JSON 塞进合法的 Javascript 中,然后才能信任压缩器。幸运的是,这可以通过简单的查找和替换来解决。

关于java - 从其他合法的 json 中剥离类似 C 的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17350679/

相关文章:

java - 为什么,如果两个对象根据 equals 不相等,则不需要返回不同的 hashCode 值?

python - 如何使用 python 可靠地解析命令 zpool status 和 zpool list 的输出,然后将所有信息插入 mysql 数据库?

javascript - 如何在 JavaScript 中将 JSON 对象转换为字符串和数字数组

json - 将 int 设置为 0 的 Unmarshal/Marshal json 似乎不起作用

swift - NSURLSession/NSURLConnection HTTP 加载失败(kCFStreamErrorDomainSSL,-9843) fatal error : unexpectedly found nil while unwrapping an Optional value

java - 将 HOCON 字符串转换为 Java 对象

java - 从父抽象类调用 getter 方法

java - 使用 AJAX 和 Spring Boot 从磁盘删除文件

java - 无法从包含 DEX 和 Java 字节码内容的 archive\app\libs\appodeal-2.1.11.jar' 创建 android 应用程序

javascript - 将包含字符串数据的变量转换为 JavaScript REST API 的 JSON 对象