大学《网站开发与应用》试题,个人网站备案 网站服务内容,wordpress插件文件夹,网页怎么制作链接前言
由于使用到httpUtill来调用接口 工具类的返回是字符串 其中接口的实现返回值是个多层泛型结构的实体类 例如ResultPageUserDto 当使用 JSON.parseObject(res,new TypeReferenceResultPageUserDto{})发现在page中存在…前言
由于使用到httpUtill来调用接口 工具类的返回是字符串 其中接口的实现返回值是个多层泛型结构的实体类 例如ResultPageUserDto 当使用 JSON.parseObject(res,new TypeReferenceResultPageUserDto{})发现在page中存在的records变成了 jsonObject 而没用到实际的泛型
解决
保证泛型信息的存在 通过使用如下两种方式 astjson2默认情况下无法获取泛型信息,因为在编译期间泛型信息会被擦除。因此,需要通过一些方式来保留泛型信息,例如使用Type注解或者TypeReference。使用TypeReference
TypeReferenceResultPageUserDto typeRef new TypeReferenceResultPageUserDto() {};
ResultPageUserDto result JSON.parseObject(jsonString, typeRef.getType());使用Type注解 (有一定的局限性) 不一定适用所有场景 在实体类中使用Type注解来指定泛型参数的具体类型,例如:
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.annotation.JSONType;JSONType(orders {JSONType.Order(name result), JSONType.Order(name data)})
public class ResultT {JSONField(ordinal 1)private T result;JSONField(ordinal 2)private T data;// 构造函数、getter、setter...
}JSONType(typeKey type, orders {JSONType.Order(name pageList), JSONType.Order(name total)})
public class PageT {JSONField(ordinal 1)private ListT pageList;JSONField(ordinal 2)private long total;// 构造函数、getter、setter...
}public class UserDto {// 字段...
}