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 extends Map.Entry> 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();
}
}