Java常用工具类:JsonUtil

版权声明:本文为博主原创文章,大家可以随便转载,觉得好给个赞哦。 https://blog.csdn.net/baidu_25310663/article/details/86006310

为了解决接口返回值为以下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());

猜你喜欢

转载自blog.csdn.net/baidu_25310663/article/details/86006310