diff --git a/src/main/java/com/alibaba/fastjson/parser/deserializer/JavaBeanDeserializer.java b/src/main/java/com/alibaba/fastjson/parser/deserializer/JavaBeanDeserializer.java index 77d8787fee..c82778e651 100755 --- a/src/main/java/com/alibaba/fastjson/parser/deserializer/JavaBeanDeserializer.java +++ b/src/main/java/com/alibaba/fastjson/parser/deserializer/JavaBeanDeserializer.java @@ -815,17 +815,11 @@ public Object createInstance(Map map, ParserConfig config) // continue; } - Method method = fieldDeser.fieldInfo.method; - if (method != null) { - Type paramType = method.getGenericParameterTypes()[0]; - value = TypeUtils.cast(value, paramType, config); - method.invoke(object, new Object[] { value }); - } else { - Field field = fieldDeser.fieldInfo.field; - Type paramType = fieldDeser.fieldInfo.fieldType; - value = TypeUtils.cast(value, paramType, config); - field.set(object, value); - } + final FieldInfo fieldInfo = fieldDeser.fieldInfo; + Type paramType = fieldInfo.fieldType; + value = TypeUtils.cast(value, paramType, config); + + fieldDeser.setValue(object, value); } if (beanInfo.buildMethod != null) { diff --git a/src/test/java/com/alibaba/json/bvt/bug/Issue_for_oschina_3087749_2215732.java b/src/test/java/com/alibaba/json/bvt/bug/Issue_for_oschina_3087749_2215732.java new file mode 100644 index 0000000000..1722d42036 --- /dev/null +++ b/src/test/java/com/alibaba/json/bvt/bug/Issue_for_oschina_3087749_2215732.java @@ -0,0 +1,27 @@ +package com.alibaba.json.bvt.bug; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import junit.framework.Test; +import junit.framework.TestCase; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by wenshao on 29/12/2016. + */ +public class Issue_for_oschina_3087749_2215732 extends TestCase { + public void test_for_issue() throws Exception { + String json = "{\"datas\":[\"a\",\"b\"]}"; + JSONObject o = JSON.parseObject(json); + o.toJavaObject(JsonBean.class); + } + + public static class JsonBean { + private List datas = new ArrayList(); + public List getDatas() { + return datas; + } + } +}