diff --git a/src/main/java/com/alibaba/fastjson/parser/deserializer/FieldDeserializer.java b/src/main/java/com/alibaba/fastjson/parser/deserializer/FieldDeserializer.java index 4f092317f3fda02a12e1ce97f2db8279015a8836..17c78a15b54f1b25a52f026a04b6384b1af15af8 100644 --- a/src/main/java/com/alibaba/fastjson/parser/deserializer/FieldDeserializer.java +++ b/src/main/java/com/alibaba/fastjson/parser/deserializer/FieldDeserializer.java @@ -2,8 +2,10 @@ package com.alibaba.fastjson.parser.deserializer; import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.parser.DefaultJSONParser; +import com.alibaba.fastjson.parser.ParserConfig; import com.alibaba.fastjson.serializer.BeanContext; import com.alibaba.fastjson.util.FieldInfo; +import com.alibaba.fastjson.util.TypeUtils; import java.lang.reflect.*; import java.util.Collection; @@ -221,12 +223,27 @@ public abstract class FieldDeserializer { /** * kotlin浠g悊绫籶roperty鐨刧et鏂规硶浼氭姏鏈垵濮嬪寲寮傚父锛岀敤set鏂规硶鐩存帴璧嬪€� */ - private static void degradeValueAssignment(Field field,Method getMethod, Object object, Object value) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { + private static boolean degradeValueAssignment( + Field field, + Method getMethod, + Object object, + Object value + ) throws InvocationTargetException, IllegalAccessException { if (setFieldValue(field, object, value)) { - return; + return true; } - Method setMethod = object.getClass().getDeclaredMethod("set" + getMethod.getName().substring(3), getMethod.getReturnType()); - setMethod.invoke(object, value); + + try { + Method setMethod = object + .getClass() + .getDeclaredMethod("set" + getMethod.getName().substring(3), getMethod.getReturnType()); + setMethod.invoke(object, value); + return true; + } catch (InvocationTargetException ignored) { + } catch (NoSuchMethodException ignored) { + } catch (IllegalAccessException ignored) { + } + return false; } private static boolean setFieldValue(Field field, Object object, Object value) throws IllegalAccessException { diff --git a/src/test/java/com/alibaba/json/bvt/parser/deser/list/ListFieldTest.java b/src/test/java/com/alibaba/json/bvt/parser/deser/list/ListFieldTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ba3dd82190b2365efc3811f896b5bd79e39ceb46 --- /dev/null +++ b/src/test/java/com/alibaba/json/bvt/parser/deser/list/ListFieldTest.java @@ -0,0 +1,16 @@ +package com.alibaba.json.bvt.parser.deser.list; + +import com.alibaba.fastjson.JSON; +import junit.framework.TestCase; + +public class ListFieldTest extends TestCase { + public void test_for_list() throws Exception { + JSON.parseObject("{'data':['a','b']}", TestPojo.class); + } + + public static class TestPojo{ + public java.util.List<String> getData(){ + return null; + } + } +}