Json解析器在Java中捕获尾随逗号?

时间:2016-06-22 19:55:01

标签: java json parsing

我使用以下内容检查json文件是否有效:

JsonParser parser = new JsonParser();   
parser.parse(new String(Files.readAllBytes(Paths.get((filePath.toString())))));

但是我正在验证的json文件有如下所示的尾随逗号,它不会抛出异常:

"file":"hello.htm"},]

由于这是最后一个属性,因此不需要逗号,并且在我们的应用程序的其他方面造成了麻烦。是否有解析器或某种方法来捕获这个尾随逗号?

2 个答案:

答案 0 :(得分:2)

假设JsonParser是Gson的一部分,你现在运气不好。 Gson的解析当前将JSON数组中的尾随逗号解释为null值。 It's wrong and a resolution seems to be planned for Gson 3

与此同时,您可以使用不同的解析库。我建议杰克逊。如果您只是验证JSON,可以使用

ObjectMapper mapper = new ObjectMapper();
mapper.readTree(Files.readAllBytes(Paths.get(filePath.toString())));

这将抛出异常,并带有类似于

的消息
Unexpected character (']' (code 93)): expected a value

表示它预期在,之后的实际值,而不是结束数组符号。

答案 1 :(得分:0)

迭代JSONArray时,您可以询问元素是否为空:

for (i in 0 until jsonArray.length()) {
    if (!jsonArray.isNull(i)) {
        // parse here...
    }
}

然后您就可以避免'org.json.JSONException'异常。