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


相关推荐

  • 如何将Java完全卸载

    之前安装的Java没有卸载干净,造成重新安装JDK能正常安装,接着安装JRE的时候总是报1603错误。虽然说JRE安装报错了没安装上,但是eclipse、IntelliJIDEA和AndroidStudio都能正常打开和使用,然而在命令行里却无法使用。虽然工具能正常打开,但是这不能忍,为此我差点就直接使用狂暴AOE秒杀大招重装系统了,还好,最后解决了。在这里,我分享一下我是如何解决的,有需要的小…

    2022年4月3日
    1.4K
  • python3.8安装matplotlib_matplotlib画图

    python3.8安装matplotlib_matplotlib画图1.直接打开命令提示符(快捷键window+r)2.若提示安装失败(Python——Youareusingpipversion9.0.1,howeverversion10.0.1isavailable.),输入python-mpipinstall-Upipsetuptools进行升级。安装成功,则下图所示:3.安装成功后,输入pytho…

    2022年8月31日
    7
  • DM368_了解电脑硬件基本知识

    DM368_了解电脑硬件基本知识最近到了找工作准备期,之前已将C语言、数据结构与算法、APUE总结完毕,现在需要抓紧将以往项目加以总结。关于DM368首先我们先从硬件部分开始讲起,然后再讲环境搭建、系统移植、文件烧写、最后程序开发。一、认识开发板参看下面网址可下载DM368参考原理图和Gerber文件。参看:EVMDM368SupportHome参看:EVMDM365SupportHomeDM365与DM

    2022年8月13日
    7
  • c++ 颜色_color rgb

    c++ 颜色_color rgb1.OdCmColor转COLORREFOdCmColorodaColor;COLORREFrefColor=RGB(odaColor.red(),odaColor.green(),odaColor.blue());2. COLORREF转OdCmColorCOLORREFrefColorOdCmColorodaColor;odaColor.setRGB(GetR…

    2025年7月9日
    3
  • python连接远程服务器_windows收不到组播

    python连接远程服务器_windows收不到组播C/C++code//MulticastSocket.cpp:implementationfile//#include”stdafx.h”#include”MulticastSocket.h”#include”HuanRemoteServiceDlg.h”#include”atlconv.h”#ifdef_DEBUG#definenewDEBUG_NEW#undefTHI…

    2022年10月1日
    2
  • QT QMap 使用方法实例

    QT QMap 使用方法实例QTQMap使用方法,直接上例子,请仔细体会。

    2022年5月30日
    69

发表回复

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

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