Skip to content

List 子类的泛型在反序列化时无法自动推断,元素被反序列化为 JSONObject #3926

@Shui-Ze

Description

@Shui-Ze

问题描述

简要描述您碰到的问题。
fastjson2中List 子类的泛型在反序列化时无法自动推断,元素被反序列化为 JSONObject
fastjson1和jackson都正常

环境信息

请填写以下信息:

  • JDK信息: [e.g.:Openjdk 21]
  • 版本信息:[e.g.:Fastjson2 2.0.60]

重现步骤

如何操作可以重现该问题:运行下面的main方法

import com.alibaba.fastjson2.JSON;

import java.util.ArrayList;

public class Demo {

    public static class MyDTO {
        private MyList myList;

        public MyList getMyList() {
            return myList;
        }

        public void setMyList(MyList myList) {
            this.myList = myList;
        }
    }

    public static class MyList extends ArrayList<MyObject> {}

    public static class MyObject {
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

    public static void main(String[] args) {
        MyDTO myDTO = JSON.parseObject("{\"myList\":[{\"name\":\"张三\"}]}", MyDTO.class);
        MyObject myObject = myDTO.getMyList().get(0);
        System.out.println(myObject.getName());
    }
}

期待的正确结果

输出张三

相关日志输出

Exception in thread "main" java.lang.ClassCastException: class com.alibaba.fastjson2.JSONObject cannot be cast to class ps.logic.logistics.service.impl.Demo$MyObject (com.alibaba.fastjson2.JSONObject and ps.logic.logistics.service.impl.Demo$MyObject are in unnamed module of loader 'app')
at ps.logic.logistics.service.impl.Demo.main(Demo.java:37)

附加信息

如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingfixed

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions