alibaba fastjson TypeReference 通過字符串反射返回對象


TypeReference
EditNew Page
溫紹 edited this page Nov 3, 2017 · 8 revisions
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://www.programcreek.com/java-api-examples/org.codehaus.jackson.type.TypeReference


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM