TypeReference

TypeReference1.基础使用在fastjson中提供了一个用于处理泛型反序列化的类TypeReference。importcom.alibaba.fastjson.TypeReference;List<VO>list=JSON.parseObject("…",newTypeReference<List<VO>>(){});如下写法有更好的性…

大家好,又见面了,我是你们的朋友全栈君。

1. 基础使用

在fastjson中提供了一个用于处理泛型反序列化的类TypeReference。

import com.alibaba.fastjson.TypeReference;

List<VO> list = JSON.parseObject("...", new TypeReference<List<VO>>() {});

如下写法有更好的性能

import com.alibaba.fastjson.TypeReference;

final static Type type = new TypeReference<List<VO>>() {}.getType();

List<VO> list = JSON.parseObject("...", type);

在这里例子中,通过TypeReference能够解决List中T的类型问题。

2. 带参数使用

在1.2.9 & 1.1.49.android版本中,TypeReference支持泛型参数,方便一些框架实现通用的反序列化类。用法如下:

2.1. 单参数例子

public class Response<T> {
     public T data;
}
public static <T> Response<T> parseToMap(String json, Class<T> type) {
     return JSON.parseObject(json, 
                            new TypeReference<Response<T>>(type) {});
}

2.2. 双参数例子

public static <K, V> Map<K, V> parseToMap(String json, 
                                            Class<K> keyType, 
                                            Class<V> valueType) {
     return JSON.parseObject(json, 
                            new TypeReference<Map<K, V>>(keyType, valueType) {
                            });
}

// 可以这样使用
String json = "{1:{name:\"ddd\"},2:{name:\"zzz\"}}";
Map<Integer, Model> map = parseToMap(json, Integer.class, Model.class);
assertEquals("ddd", map.get(1).name);
assertEquals("zzz", map.get(2).name);

转载于:https://github.com/alibaba/fastjson/wiki/TypeReference

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147678.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 太极阳必须要root吗_root手机教程

    太极阳必须要root吗_root手机教程以前的root基本是suroot,但是su不再维护更新之后,就有了现在的比su更好玩的root手机的工具→magisk。Magisk具备很强大的模块扩展,可以不修改system区的文件,达到修改system文件一样的效果,例如换字体,换主题,换卡机界面,换gpu驱动等等。现在就来一个面具的刷入教程。1.一台可以解锁BL的手机(可以查看公众号的历史信息,刷机教程)2.给机器刷入第三方Re…

    2022年6月4日
    88
  • Clipboard.js实现复制[通俗易懂]

    Clipboard.js实现复制[通俗易懂]Clipboard.js实现文本复制或者剪切到剪切板引用js文件使用一使用二使用三

    2022年7月1日
    26
  • 编译原理之代码生成「建议收藏」

    前面提到了经过了词法分析->语法分析->语义分析->中间代码优化,最后的阶段便是在目标机器上运行的目标代码的生成了。目标代码生成阶段的任务是:将此前的中间代码转换成特定机器上的机器语言或汇编语言,这种转换程序便被称为代码生成器。1.程序移植性和编译器模块设计的关系之所以将编译原理分成这种多阶段多模块的组织形式,本质的考虑其实只有两个方面:一、代码复用:尽可能在不增加程序员工作量的前提下,增

    2022年4月10日
    50
  • 192.168.和10.0.开头的IP、内网IP段、IP简介、分类——(IP观止)

    192.168.和10.0.开头的IP、内网IP段、IP简介、分类——(IP观止)在这三类地址中,绝大多数的IP地址都是公有地址,需要向国际互联网信息中心申请注册。但是在IPv4地址协议中预留了3个IP地址段,作为私有地址,供组织机构内部使用。这三个地址段分别位于A、B、C三类地址内:A类地址:10.0.0.0–10.255.255.255B类地址:172.16.0.0–172.31.255.255C类地址:192.168.0.0–192.168….

    2022年5月7日
    123
  • swoole手册

    swoole手册

    2021年11月3日
    52
  • 博士进高校难不难_送礼挤破头图片

    博士进高校难不难_送礼挤破头图片同一个实验室,硕士们进了大厂拿高薪,为什么博士却要挤破头进高校?高赞回答一作者:shui0908链接:https://www.zhihu.com/question/293696289/a…

    2025年11月2日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号