package com.github.hunter0x7c7.sync.utils; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; /** * ================================================================ *

* 版 权: Hunter(c)2018 *

* 作 者: Hunter *

* 版 本: V1.0 *

* 创建日期: 2018/3/26 16:50 *

* 描 述:Json工具类 *

*

* 修订历史: *

* ================================================================ */ public class JsonUtil { private static Gson mGson = new Gson(); /** * 将json字符串转化成实体对象 */ public static T fromJson(String json, Class classOfT) { return mGson.fromJson(json, classOfT); } /** * 将json字符串转化成实体对象 * 示例:new TypeToken>() { }.getType() */ public static T fromJson(String json, Type typeOfT) { return mGson.fromJson(json, typeOfT); } /** * 将json字符串转化成实体对象 */ public static T fromJson(String json, TypeToken typeToken) { return fromJson(json, typeToken.getType()); } /** * 将对象准换为json字符串 或者 把list 转化成json */ public static String toJson(T object) { return mGson.toJson(object); } /** * 把json 字符串转化成list */ public static List stringToList(String json, Class cls) { Gson gson = new Gson(); List list = new ArrayList<>(); JsonArray array = new JsonParser().parse(json).getAsJsonArray(); for (final JsonElement elem : array) { list.add(gson.fromJson(elem, cls)); } return list; } /** * Json字符串转Map */ public static Map jsonToMap(String jsonStr) { jsonStr = jsonStr.replaceAll("[ ]*", "").replaceAll("[\r\n]*", "") .replace("{\"", "").replace("\"}", "") .replace("\",\"", "&").replace(",\"", "&").replace(",", "&") .replace("\":\"", "=").replace("\":", "=").replace(":", "="); Map map = new LinkedHashMap<>(); String[] sp = jsonStr.split("&"); for (String ssp : sp) { String[] sspp = ssp.split("="); if (sspp.length >= 2) { if (sspp[1] != null && sspp[1].length() > 0) { map.put(sspp[0], sspp[1]); } } } return map; } public static String mapToJson2(Map map) { Set> entrySet = map.entrySet(); StringBuilder sb = new StringBuilder(); sb.append("{"); for (Map.Entry entry : entrySet) { if (sb.length() > 1) { sb.append(","); } sb.append("\"") .append(entry.getKey()) .append("\":\"") .append(entry.getValue()) .append("\""); } sb.append("}"); return sb.toString(); } public static String mapToJson(Map map) { Set> entrySet = map.entrySet(); StringBuilder sb = new StringBuilder(); sb.append("{"); Object value; for (Map.Entry entry : entrySet) { if (sb.length() > 1) { sb.append(","); } sb.append("\"").append(entry.getKey()).append("\":"); value = entry.getValue(); if (value instanceof Short || value instanceof Integer || value instanceof Long || value instanceof CharSequence || value instanceof Float || value instanceof Double || value instanceof Boolean) { sb.append("\"").append(value).append("\""); } else { sb.append(JsonUtil.toJson(value)); } } sb.append("}"); return sb.toString(); } }