Skip to content

[BUG]2.0.6反序列化中List里面有Long类型字段报错com.alibaba.fastjson2.reader.FieldReaderListInt64 #409

@waitlife

Description

@waitlife

版本:

2.0.6

实体类:

public class TeacherJson {
    private static final long serialVersionUID = 1L;

    @JsonProperty("user_serial")
    private Long userSerial;

    @JsonProperty("user_name")
    private String userName;

    private List<String> codes;

    @JsonProperty("dept_list")
    private List<DeptList> deptList;

    @JsonProperty("manage_class_ids")
    private List<DeptList> manageClassIds;

    @JsonProperty("user_deps")
    private List<String> userDeps;

    public Long getUserSerial() {
        return userSerial;
    }

    public void setUserSerial(Long userSerial) {
        this.userSerial = userSerial;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public List<String> getCodes() {
        return codes;
    }

    public void setCodes(List<String> codes) {
        this.codes = codes;
    }

    public List<DeptList> getDeptList() {
        return deptList;
    }

    public void setDeptList(List<DeptList> deptList) {
        this.deptList = deptList;
    }

    public List<DeptList> getManageClassIds() {
        return manageClassIds;
    }

    public void setManageClassIds(List<DeptList> manageClassIds) {
        this.manageClassIds = manageClassIds;
    }

    public List<String> getUserDeps() {
        return userDeps;
    }

    public void setUserDeps(List<String> userDeps) {
        this.userDeps = userDeps;
    }

    public String toJson() {
        return JSON.toJSONString(this);
    }

    @Override
    public String toString() {
        return this.toJson();
    }
}

public class DeptList {
    private static final long serialVersionUID = 1L;

    @JsonProperty("dept_id")
    private Long deptId;

    @JsonProperty("pt_node_path_name")
    private String ptNodePathName;

    @JsonProperty("dept_name")
    private String deptName;

    @JsonProperty("is_grade")
    private String isGrade;

    public Long getDeptId() {
        return deptId;
    }

    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public String getPtNodePathName() {
        return ptNodePathName;
    }

    public void setPtNodePathName(String ptNodePathName) {
        this.ptNodePathName = ptNodePathName;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public String getIsGrade() {
        return isGrade;
    }

    public void setIsGrade(String isGrade) {
        this.isGrade = isGrade;
    }
}

调用方法:

JSONObject teacherObject = 调用函数;//此处返回正确的JSONObject
List teacherList = teacherObject.getList("records", TeacherJson.class);

样例数据:

{
"total": 1,
"records": {
"user_serial": 2201266,
"user_name": "朱忠恕",
"codes": [
"Teacher"
],
"dept_list": [
{
"dept_id": 200882,
"pt_node_path_name": "/测试学校",
"dept_name": "办公室",
"is_grade": 0
}
],
"manage_class_ids": [],
"user_deps": [
200882
]
}
}

报错提示:

com.alibaba.fastjson2.reader.FieldReaderListInt64

尝试方法:

修改实体DeptList中的deptId类型为String,且将它的getDeptId和setDeptId方法都修改为String类型,不会报错。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions