我正在处理操纵“宽松”JSON 数据的系统,其中包括 shell 样式的#
行注释:
[
{
# Batman
"first-name": "Bruce",
"last-name": "Wayne"
},
{
# Superman
"first-name": "Clark",
"last-name": "Kent"
}
]
我正在处理的系统部分使用json-lib(我惊讶地发现它可以容忍 shell 样式的注释)来解析 JSON 输入。
我需要从这些注释中提取一些额外的注释,但 json-lib 似乎只是丢弃它们而不提供用于读取它们的 API:
JSONObject map = (JSONObject)JSONSerializer.toJSON("{\n"+
" # Batman\n" + // note the shell-style # comment
" \"first-name\": \"Bruce\",\n" +
" \"last-name\": \"Wayne\"\n" +
"}");
System.out.println(map.toString());
/* <<'OUTPUT'
* {"first-name":"Bruce","last-name":"Wayne"}
* OUTPUT
* note the absence of the shell-style comment
*/
这是有道理的,因为注释不是 JSON 规范的一部分,而且我很幸运 json-lib 在解析它们时不只是窒息。
注意:
- 其他系统使用相同的 JSON,并且注释需要对它们透明,因此不能通过添加注释属性来修改 JSON 结构。
- 并非我系统中的所有组件和对象都可以访问原始 JSON 源:一个组件读取文件并使用 JSONlib 解析它并传递反序列化的映射等。
在处理 JSON 输入时如何阅读和解析这些注释?是否有一个库可以让我阅读它们并将它们与它们在 JSON 中的位置相关联 - 我可以轻松地将Batman
评论连接到“布鲁斯韦恩”条目吗?
我目前正在使用 json-lib,但我愿意研究其他 JSON 库,并且同样愿意使用其他扩展 JSON 的语言,例如 YAML - 但我不确定这些工具是否允许我阅读和处理我输入的评论。