1、json对应的model是T
String json = "{\"content\":\"测试\"}";
public static <T> T fromJsonToObject(String json, Class<T> clazz) {
Gson gson = new Gson();
return gson.fromJson(json, clazz);
}
2、json对应的model是List<T>
String json = "[{\"content\":\"测试1\"},{\"content\":\"测试2\"}]";
/**
* 将json字符串转换为ArrayList
*
* @param json
* @param clazz
* @param <T>
* @return
*/
public static <T> List<T> fromJsonToList(String json, Class<T> clazz) {
List<T> list = new ArrayList<>();
Gson gson = new Gson();
JsonArray array = new JsonParser().parse(json).getAsJsonArray();
for (JsonElement obj : array) {
list.add(gson.fromJson(obj, clazz));
}
return list;
}
3、json对应的model是 model里面包含T
String json = "{\"code\":\"100\",\"message\":\"测试\",\"data\":{\"content\":\"测试1\"}}";
/**
* @author android_wjh
* @date 2020/6/5
*/
public class DataInfo<T> {
private String code;
private String message;
private T data;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
static ParameterizedType type(final Class raw, final Type... args) {
return new ParameterizedType() {
@Override
public Type[] getActualTypeArguments() {
return args;
}
@Override
public Type getRawType() {
return raw;
}
@Override
public Type getOwnerType() {
return null;
}
};
}
- 解析数据,clazz就是T的实体类。例如Content.class
Gson gson = new Gson();
Type objectType = type(DataInfo.class, clazz);
DataInfo dataInfo = gson.fromJson(json, objectType);
4、json对应的model是 model里面包含List<T>
String json = "{\"code\":\"100\",\"message\":\"测试\",\"data\":[{\"content\":\"测试1\"},{\"content\":\"测试2\"}]}";
/**
* @author android_wjh
* @date 2020/6/5
*/
public class DataListInfo<T> {
private String code;
private String message;
private List<T> data;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
}
static ParameterizedType type(final Class raw, final Type... args) {
return new ParameterizedType() {
@Override
public Type[] getActualTypeArguments() {
return args;
}
@Override
public Type getRawType() {
return raw;
}
@Override
public Type getOwnerType() {
return null;
}
};
}
- 解析数据,clazz就是T的实体类。例如Content.class
Gson gson = new Gson();
Type objectType = type(DataListInfo.class, clazz);
DataListInfo dataListInfo = gson.fromJson(json, objectType);