Java常用工具类:JsonUtil
为了解决接口返回值为以下Map转换成对象的问题
{errors=[], successes=[{uid=70475, sDate={20190114=[3], 20190112=[3]}}]}
Java对象属性中较简单的情况,直接使用反射取出字段名称和值放到对应map的key和value上即可。
可以参考https://blog.csdn.net/qq_23490959/article/details/79126244
但是对象属性多层的情况下使用反射就不简单了,针对这种情况的解决方案是:Map先转json字符串,然后再使用json字符串转对象
具体工具类为:
package com.hughjin.solr.util;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.lang.reflect.Type;
/**
* @author hughjin
*/
public class JsonUtil {
private static Gson gson = (new GsonBuilder()).enableComplexMapKeySerialization().serializeNulls().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
public JsonUtil() {
}
public static String toJson(Object obj) {
return gson.toJson(obj);
}
public static <T> T fromJson(String json, Class<T> classOfT) {
return gson.fromJson(json, classOfT);
}
public static JsonObject fromJson(String json) {
return (new JsonParser()).parse(json).getAsJsonObject();
}
public static <T> T fromJson(String json, Type type) {
return gson.fromJson(json, type);
}
}
调用方法为:
Map<String,Object> rspMap = new HashMap<>();
Animals animals = JsonUtil.fromJson(JsonUtil.toJson(rspMap), new TypeToken<Animals>() {
}.getType());
作者:hughjin
来源链接:https://blog.csdn.net/baidu_25310663/article/details/86006310