From a444862b98c7a1ba283f1a01c47d170eafdcc28a Mon Sep 17 00:00:00 2001 From: Andrew Wang Date: Thu, 6 Jun 2013 22:28:19 +0800 Subject: [PATCH] fix Issue #40 : parser context contains Null object. ex: $.null.beans1[0] fix comment error. --- .../com/alibaba/fastjson/parser/DefaultJSONParser.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/alibaba/fastjson/parser/DefaultJSONParser.java b/src/main/java/com/alibaba/fastjson/parser/DefaultJSONParser.java index 3441861a4..7eab2064c 100755 --- a/src/main/java/com/alibaba/fastjson/parser/DefaultJSONParser.java +++ b/src/main/java/com/alibaba/fastjson/parser/DefaultJSONParser.java @@ -360,6 +360,11 @@ public class DefaultJSONParser extends AbstractJSONParser { if (!setContextFlag) { setContext(object, fieldName); setContextFlag = true; + + // fix Issue #40 + if (this.context != null && !(fieldName instanceof Integer)) { + this.popContext(); + } } Object value; @@ -389,7 +394,7 @@ public class DefaultJSONParser extends AbstractJSONParser { } object.put(key, value); - } else if (ch == '[') { // 减少潜套,兼容android + } else if (ch == '[') { // 减少嵌套,兼容android lexer.nextToken(); JSONArray list = new JSONArray(); this.parseArray(list, key); @@ -404,7 +409,7 @@ public class DefaultJSONParser extends AbstractJSONParser { } else { throw new JSONException("syntax error"); } - } else if (ch == '{') { // 减少潜套,兼容android + } else if (ch == '{') { // 减少嵌套,兼容android lexer.nextToken(); Object obj = this.parseObject(new JSONObject(), key); checkMapResolve(object, key.toString());