fastJson转List<实体>
问题
当我们用 fastjson 如下 API 转成 List<T> 这种类型时,会遇到类型丢失的问题
com.alibaba.fastjson.JSON#parseObject(java.lang.String, java.lang.Class<T>)
解决方案
String testJSON = "[{\"type\":\"a\"},{\"type\":\"b\"}]"; List<Button> buttons = JSON.parseObject(testJSON, new TypeReference<ArrayList<Button>>() {});
或者还有一种更通用的转换方式
List<Button> buttons = JSON.parseArray(testJSON, Button.class);
更多
同理,这种同样可以解决 Map 的问题
String testMapJSON = "{\"1\":{\"type\":\"a\"},\"2\":{\"type\":\"b\"}}"; Map<String, Button> buttonMap = JSON.parseObject(testMapJSON, new TypeReference<HashMap<String, Button>>() {});
如果是嵌套层次中属性有接口或父类型的,JSON 实际类型需要额外 @type 属性来指定当前类型,并且要放到 JSON 类字符串的第一行。
相关推荐
88483063 2020-06-28
80337960 2020-06-10
88483063 2020-05-25
88103756 2020-05-02
88483063 2020-04-23
ITprivate 2020-03-26
80337960 2020-03-26
88483063 2020-01-29
83163452 2020-01-28
baijinswpu 2020-01-25
88483063 2020-01-11
86403969 2020-01-04
88103756 2020-01-01
88103756 2019-12-24
fengchao000 2019-12-24
80337960 2019-12-23
xufankang 2019-12-19
88483063 2019-12-16
80337960 2019-12-13