【发布时间】:2018-09-18 21:39:16
【问题描述】:
在互联网上到处寻找可靠的 json 注释剥离器和压缩器的 java 端口,但大多数都是有缺陷的设计(不支持多行 cmets,或字符串中的注释模式)。
所以我匆匆忙忙地把它扔到了一起:https://gist.github.com/justisr/abab012af3ef399908798a687185d49a
在我拥有的现有 json 文件上对其进行了测试,一切都按预期进行,但我并不满意。 从 json 字符串中剥离 cmets 真的没有更快/标准的方法吗?
以前我使用https://github.com/getify/JSON.minify,但它很慢,而且文件末尾的常规 // 注释再次破坏了它,因此我绝望了。
【问题讨论】:
-
根据定义,JSON 格式不能包含任何形式的 cmets(
//和/* ... */都不是),您指的是 JavaScript 对象吗? -
当然可以。 Javascript cmets 在其他合法的 JSON 对象中。
-
我明白了。我以前从未见过将 JavaScript 标准化为 JSON 的库。我想你的要点很好,除非你希望应用一个真正的 JavaScript 解析器,它无论如何都会比你只擦除 cmets 的专用代码慢。
-
YAML 在配置文件的世界中接管了 JSON :) 但它确实缺少对 cmets 的支持(纯标准)是 JSON 的最大缺点,令人惊讶的是为什么这种格式如此受欢迎对于有这种缺陷的配置文件。
-
请参阅JSON5,了解带有 cmets 的“标准” JSON 风格。不确定它的采用范围有多广,但最近 IntelliJ 中添加了对 JSON5 的支持,这是一个好兆头。