用到 [JSON] 的官方 [Java API] 时,遇到了一个 bug,当解析“{"a":[a,b,”,会导致 OutOfMemoryException。简单来说,就是整个 JSON 字符串中,以一个不完整的 JSON Array 结尾并且最后一个有效字符是逗号时,会引发这个问题。补丁如下:
--- src/org/json/JSONArray.java 2008-02-02 06:59:17 +0000
+++ src/org/json/JSONArray.java 2008-02-02 10:42:30 +0000
@@ -122,8 +126,11 @@
switch (x.nextClean()) {
case ';':
case ',':
- if (x.nextClean() == ']') {
+ char c = x.nextClean();
+ if (c == ']') {
return;
+ } else if (c == 0) {
+ throw x.syntaxError("Expected a ',' or ']'");
}
x.back();
break;




Post new comment