我使用以下内容检查json文件是否有效:
JsonParser parser = new JsonParser();
parser.parse(new String(Files.readAllBytes(Paths.get((filePath.toString())))));
但是我正在验证的json文件有如下所示的尾随逗号,它不会抛出异常:
"file":"hello.htm"},]
由于这是最后一个属性,因此不需要逗号,并且在我们的应用程序的其他方面造成了麻烦。是否有解析器或某种方法来捕获这个尾随逗号?
答案 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'异常。