fastjson2
fastjson2 copied to clipboard
[BUG] parseObject方法如果使用TypeReference参数中带有泛型,无法注入字段值,但是FastJson可以work
问题描述
简要描述您碰到的问题。
环境信息
请填写以下信息:
- OS信息: [e.g.:Windows11 16 GB]
- JDK信息: [e.g.:Oraclejdk 1.8.0_202]
- 版本信息:[e.g.:Fastjson2 2.0.51]
重现步骤
如何操作可以重现该问题:
对象定义
public class DataApiResponse <T> {
private String code;
private String msg;
private List<T> data; // T对象中字段值都为有效注入
}
@Data public class DfTableMetaModel {
private String tbName;
private String tbComment;
private final List<DfColumnMetaModel> colMetaList = new ArrayList<>();
public void addColMeta(DfColumnMetaModel colMetaInfo) {
this.colMetaList.add(colMetaInfo);
}
}
处理如下类似json数据:
{ "msg": "调用成功", "code": "200", "data": [ { "tb_comment": "bbb", "tb_name": "aaa" } ] }
执行如下代码无法将泛型DfTableMetaModel的值注入,但是改回FastJson可以注入
DataApiResponse<DfTableMetaModel> tableMetaResult = JSON.parseObject(dataApiRespStr, new TypeReference<DataApiResponse<DfTableMetaModel>>() {});
期待的正确结果
与FastJson结果一致