java.utils(五)之JsonCommon

* 关于 json 转换的相关封装 *

需要的 jar 包: gson.jar

package common;

import com.google.gson.*;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by lenovo on 2017/9/24.
 */
public class JsonCommon {

    /**
     * 将传入的 json 字符串按类模板解析成对象
     *
     * @param json  需要解析的 json 字符串
     * @param clazz 类模板
     * @param <T>   泛型
     * @return 解析好的对象
     */
    public <T> T getObject(String json, Class<T> clazz) {
        Gson gson = new Gson();
        T bean = gson.fromJson(json, clazz);
        return bean;
    }

    /**
     * 将传入的 json 字符串转换成 json 对象
     *
     * @param json
     * @return
     */
    public JsonObject toJsonObject(String json) {
        JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();

        return jsonObject;
    }

    /**
     * 将 jsonArray 转换为 List<T> 类型
     *
     * @param jsonArray
     * @param clazz
     * @param <T>
     * @return
     */
    public <T> List<T> jsonArrayToObject(JsonArray jsonArray, Class<T> clazz) {
        Gson gson = new Gson();
        List<T> list = new ArrayList<>();
        for (JsonElement jsonElement : jsonArray) {
            T element = gson.fromJson(jsonElement, clazz);
            list.add(element);
        }

        return list;
    }

    //将传入的对象解析成 json 字符串
    public <T> String getJsonString(T bean) {
        Gson gson = new Gson();
        String json = gson.toJson(bean, bean.getClass());
        return json;
    }

    //将获取到的 json 字符串转换为对象集合进行返回
    public <T> List<T> getObjectList(String jsonData, Class<T> clazz) {
        List<T> list = new ArrayList<>();
        if (jsonData.startsWith("[") && jsonData.endsWith("]")) {
            //截取字符串,去除中括号
            jsonData = jsonData.substring(1, jsonData.length() - 1);
            //将字符串以 "}," 分解成数组//////
            String[] strings = jsonData.split("},");
            //分解后的字符串数组长度
            int stringsLength = strings.length;
            //遍历数组,进行解析,字符串解析成对象
            for (int i = 0; i < stringsLength; i++) {
                String newJsonString = null;
                if (i == stringsLength - 1) {
                    newJsonString = strings[i];
                } else {
                    newJsonString = strings[i] + "}";
                }
                T bean = getObject(newJsonString, clazz);
                list.add(bean);
            }
        }
        if (list == null || list.size() == 0) {
            return null;
        }
        return list;
    }
}

猜你喜欢

转载自blog.csdn.net/yin__ren/article/details/80891306