diff --git a/src/main/java/com/alibaba/fastjson/parser/deserializer/ASMDeserializerFactory.java b/src/main/java/com/alibaba/fastjson/parser/deserializer/ASMDeserializerFactory.java index 20b5610da..19227a23c 100644 --- a/src/main/java/com/alibaba/fastjson/parser/deserializer/ASMDeserializerFactory.java +++ b/src/main/java/com/alibaba/fastjson/parser/deserializer/ASMDeserializerFactory.java @@ -846,7 +846,7 @@ public class ASMDeserializerFactory implements Opcodes { mw.visitFieldInsn(GETFIELD, context.getClassName(), fieldInfo.getName() + "_asm_list_item_deser__", getDesc(ObjectDeserializer.class)); mw.visitVarInsn(ALOAD, 1); - mw.visitInsn(ACONST_NULL); + mw.visitLdcInsn(com.alibaba.fastjson.asm.Type.getType(getDesc(itemType))); mw.visitVarInsn(ILOAD, context.var("i")); mw.visitMethodInsn(INVOKESTATIC, getType(Integer.class), "valueOf", "(I)Ljava/lang/Integer;"); mw.visitMethodInsn(INVOKEINTERFACE, getType(ObjectDeserializer.class), "deserialze", diff --git a/src/test/java/com/alibaba/json/test/a/Group.java b/src/test/java/com/alibaba/json/test/a/Group.java new file mode 100644 index 000000000..e11b8a297 --- /dev/null +++ b/src/test/java/com/alibaba/json/test/a/Group.java @@ -0,0 +1,16 @@ +package com.alibaba.json.test.a; + +import java.util.List; + +public class Group { + + List uulist; + + public List getUulist() { + return uulist; + } + + public void setUulist(List uulist) { + this.uulist = uulist; + } +} diff --git a/src/test/java/com/alibaba/json/test/a/JTest.java b/src/test/java/com/alibaba/json/test/a/JTest.java new file mode 100644 index 000000000..7c54c9c6c --- /dev/null +++ b/src/test/java/com/alibaba/json/test/a/JTest.java @@ -0,0 +1,31 @@ +package com.alibaba.json.test.a; + + + +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.fastjson.JSON; + +public class JTest { + + /** + * @param args + */ + public static void main(String[] args) { + List list = new ArrayList(); + User u1 = new User(1, "111111"); + User u2 = new User(2, "222222"); + User u3 = new User(3, "33333"); + User u4 = new User(4, "4444"); + list.add(new User[] { u1, u2 }); + list.add(new User[] { u3, u4 }); + Group clz = new Group(); + clz.setUulist(list); + String json = JSON.toJSONString(clz); + System.out.println(json); + Group clz1 = JSON.parseObject(json, Group.class); + System.out.println(clz1.getUulist().get(1)[1].getName()); + } + +} diff --git a/src/test/java/com/alibaba/json/test/a/User.java b/src/test/java/com/alibaba/json/test/a/User.java new file mode 100644 index 000000000..227c79d90 --- /dev/null +++ b/src/test/java/com/alibaba/json/test/a/User.java @@ -0,0 +1,36 @@ +package com.alibaba.json.test.a; + + +public class User{ + public User() { + } + public User(int age, String name) { + super(); + this.age = age; + this.name = name; + } + + private int age; + private String name; + + @Override + public String toString() { + return "User [age=" + age + ", name=" + name + "]"; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +}