【发布时间】:2013-05-09 17:18:30
【问题描述】:
我的 JSON 文件的内容是:
{
"MJ" : "Michael Jordan",
"KB" : "Kobe Bryant",
"KG" : "Kevin Garnet"
}
如果我使用 Gson 或 Jackson 或 JsonSimple 或其他 Java/JSON 第三方库,现在很容易将此文件(或字符串)转换为 Java 类(例如:java.util.HashMap)。例如,我可以像这样使用 Gson:
//this returns the string above
String jsonString = TestReader.getStrFromJSonFile();
Gson gson = new Gson();
Type type = new TypeToken<HashMap<String, String>>() {}.getType();
HashMap<String, String> map = gson.fromJson(jsonString, type);
但是,如果我的 JSON 文件包含 cmets,大多数第三方库将无法使用。 例如:
{ //Bulls "MJ" : "Michael Jordan", /*Lakers*/ "KB" : "Kobe Bryant", //Boston Celtics "KG" : "Kevin Garnet" }
现在我什至在谷歌搜索和堆栈溢出之后感到困惑。我有两个问题:
JSON 文件真的可以包含任何 cmets 吗?我认为可以,因为我每天都会在 JSON 文件中看到很多这样的内容。但是 >>> (links)
如果可以,我该如何解决我的问题?
【问题讨论】:
-
如果您在使用的解析器上启用该功能,Jackson 支持 cmets:jackson.codehaus.org/1.8.8/javadoc/org/codehaus/jackson/…
-
@WChargin 其实这只是我的一个问题,我的重点是第二个问题。
-
@cmbaxter 非常感谢。它有效 :-)
-
这样的评论不包含legal JSON,因此您必须使用专门启用的 JSON 解析器来处理它们。任何 Web 服务或其他“通用”JSON 源都不应该以这种方式生成 cmets。 (基本上你真正拥有的是 JavaScript,而不是 JSON。)