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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu 下安装 GCC 的方法[通俗易懂]

    Ubuntu 下安装 GCC 的方法[通俗易懂]1.更新Ubuntu执行下面命令:$sudoaptupdate结果更新老是失败,于是把etc\apt\sources.list文件中的数据源修改成国内站点,才搞定:debhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/bionicmainrestricteduniversemultiversedebhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/bionic-updatesmainre

    2022年7月24日
    10
  • 汇微商app v4.0.1官方iPhone版

    汇微商app v4.0.1官方iPhone版微信加粉完全免费,分行业类别,精确加粉,自动匹配筛选,拒绝僵尸粉,让你彻底解决烦恼。

    2022年5月16日
    41
  • VS 2017安装教程

    VS 2017安装教程 1、首先下载安装包,地址是:https://www.microsoft.com/zh-cn/download/,进入首页后选择开发人员工具,进入开发人员工具后即可下载VS,VS有三个版本,分别是社区版、专业版、企业版。我选择的是社区版。点击下载VisualStudio(蓝色底纹)左下侧的发行说明,即可下载以前的旧版本(https://my.visualstudio.com/download…

    2022年6月9日
    44
  • JAVA异或加密「建议收藏」

    JAVA异或加密「建议收藏」JAVA异或加密int或者byte类型的数据异或操作后变成另外一个数字,再次和同一个数异或后又变成原来的数字。例1/**加密前数字:3加密后数字:1解密后数字:3加密前字符:abcd加密加密后字符:c`af爢筄解密后字符:abcd加密*/publicstaticvoidmain(String[]args){int…

    2022年10月5日
    3
  • 使用VLC搭建视频直播服务器[通俗易懂]

    使用VLC搭建视频直播服务器[通俗易懂]去年我们信息之夜我们进行过视频直播服务,当时我们使用了WMS(WindowsMediaServer)实现了这个服务,但是编码是微软的WMV,因而像iPhone/Android这样的智能手机无法观看,今天我给大家带来一种更简便的实现方式,并帮助所有平台用户都可以观看。首先介绍一下,今天我们的工具VLCPlayer。VLC主页:http://www.videolan.org VLC

    2022年6月4日
    37
  • linux GNU 交流

    linux GNU 交流

    2021年9月8日
    50

发表回复

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

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