diff --git a/src/main/java/com/alibaba/fastjson/JSON.java b/src/main/java/com/alibaba/fastjson/JSON.java index 620aa2b9b..4dc9fea47 100755 --- a/src/main/java/com/alibaba/fastjson/JSON.java +++ b/src/main/java/com/alibaba/fastjson/JSON.java @@ -525,7 +525,10 @@ public abstract class JSON implements JSONStreamAware, JSONAware { JSONObject json = new JSONObject(); try { - javaBeanSerializer.getFieldValues(javaObject, json); + Map values = javaBeanSerializer.getFieldValuesMap(javaObject); + for (Map.Entry entry : values.entrySet()) { + json.put(entry.getKey(), toJSON(entry.getValue())); + } } catch (Exception e) { throw new JSONException("toJSON error", e); } diff --git a/src/main/java/com/alibaba/fastjson/serializer/JavaBeanSerializer.java b/src/main/java/com/alibaba/fastjson/serializer/JavaBeanSerializer.java index fc4828af2..b57e9b6a9 100755 --- a/src/main/java/com/alibaba/fastjson/serializer/JavaBeanSerializer.java +++ b/src/main/java/com/alibaba/fastjson/serializer/JavaBeanSerializer.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.IdentityHashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -602,9 +603,13 @@ public class JavaBeanSerializer implements ObjectSerializer { } } - public void getFieldValues(Object object, Map outMap) throws Exception { + public Map getFieldValuesMap(Object object) throws Exception { + Map map = new LinkedHashMap(sortedGetters.length); + for (FieldSerializer getter : sortedGetters) { - outMap.put(getter.fieldInfo.name, getter.getPropertyValue(object)); + map.put(getter.fieldInfo.name, getter.getPropertyValue(object)); } + + return map; } }