package com.xxl.job.core.util;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
|
import java.lang.reflect.ParameterizedType;
|
import java.lang.reflect.Type;
|
import java.util.List;
|
|
/**
|
* @author xuxueli 2020-04-11 20:56:31
|
*/
|
public class GsonTool {
|
|
private static Gson gson = null;
|
static {
|
gson= new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
|
}
|
|
/**
|
* Object 转成 json
|
*
|
* @param src
|
* @return String
|
*/
|
public static String toJson(Object src) {
|
return gson.toJson(src);
|
}
|
|
/**
|
* json 转成 特定的cls的Object
|
*
|
* @param json
|
* @param classOfT
|
* @return
|
*/
|
public static <T> T fromJson(String json, Class<T> classOfT) {
|
return gson.fromJson(json, classOfT);
|
}
|
|
/**
|
* json 转成 特定的 rawClass<classOfT> 的Object
|
*
|
* @param json
|
* @param classOfT
|
* @param argClassOfT
|
* @return
|
*/
|
public static <T> T fromJson(String json, Class<T> classOfT, Class argClassOfT) {
|
Type type = new ParameterizedType4ReturnT(classOfT, new Class[]{argClassOfT});
|
return gson.fromJson(json, type);
|
}
|
public static class ParameterizedType4ReturnT implements ParameterizedType {
|
private final Class raw;
|
private final Type[] args;
|
public ParameterizedType4ReturnT(Class raw, Type[] args) {
|
this.raw = raw;
|
this.args = args != null ? args : new Type[0];
|
}
|
@Override
|
public Type[] getActualTypeArguments() {
|
return args;
|
}
|
@Override
|
public Type getRawType() {
|
return raw;
|
}
|
@Override
|
public Type getOwnerType() {return null;}
|
}
|
|
/**
|
* json 转成 特定的cls的list
|
*
|
* @param json
|
* @param classOfT
|
* @return
|
*/
|
public static <T> List<T> fromJsonList(String json, Class<T> classOfT) {
|
return gson.fromJson(
|
json,
|
new TypeToken<List<T>>() {
|
}.getType()
|
);
|
}
|
|
}
|