美文网首页
JSON 转换为泛型类型丢失问题

JSON 转换为泛型类型丢失问题

作者: JennTu | 来源:发表于2019-10-30 12:06 被阅读0次

问题

当我们用 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 类字符串的第一行。

相关文章

  • JSON 转换为泛型类型丢失问题

    问题 当我们用 fastjson 如下 API 转成 List 这种类型时,会遇到类型丢失的问题 解决方案 ...

  • swift3.0 类型转换

    任意对象 anyObject转换为json对象 任意对象转换为String类型 String类型转Int类型

  • 转换操作符

    Cast:将非泛型的 IEnumerable 集合元素转换为指定的泛型类型,若类型转换失败则抛出异常。 ToArr...

  • Swift Tour Learn (十二) -- Swift 语

    本章将会介绍 泛型所解决的问题泛型函数类型参数命名类型参数泛型类型扩展一个泛型类型类型约束关联类型泛型 Where...

  • JSON转换泛型对象 泛型字段转换异常问题ClassCastEx

    alibaba.fastjson : JSON对象转换Bean对象,对象内泛型字段类型转换异常问题。 错误示例: ...

  • iOS9新特性之泛型 和__kindof

    泛型:限制类型 __covariant(协变):用于泛型数据强转类型,可以向上强转,子类 可以转成 父类__con...

  • java泛型类型擦除,json转对象的问题

    TypeReference 字面意思是指Type的Reference,也就是某类型的一个指向或者引用,主要解决泛型...

  • Json

    json.loads() :将字符串转换为Python数据类型json.dumps() :将Python数据类型转...

  • 11.泛型

    泛型的好处 避免了类型强转的麻烦。 它提供了编译期的类型安全,确保在泛型类型(通常为泛型集合)上只能使用正确类型的...

  • Flutter中泛型

    泛型 • 正确指定泛型类型有助于产生更好代码 • 泛型减少重复代码 而泛型就可以解决上面的问题,它通过对类型参数化...

网友评论

      本文标题:JSON 转换为泛型类型丢失问题

      本文链接:https://www.haomeiwen.com/subject/cfjovctx.html