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;
|
|
/**
|
* ================================================================
|
* <p>
|
* 版 权: Hunter(c)2018
|
* <p>
|
* 作 者: Hunter
|
* <p>
|
* 版 本: V1.0
|
* <p>
|
* 创建日期: 2018/3/26 16:50
|
* <p>
|
* 描 述:Json工具类
|
* <p>
|
* <p>
|
* 修订历史:
|
* <p>
|
* ================================================================
|
*/
|
public class JsonUtil {
|
|
private static Gson mGson = new Gson();
|
|
/**
|
* 将json字符串转化成实体对象
|
*/
|
public static <T> T fromJson(String json, Class<T> classOfT) {
|
return mGson.fromJson(json, classOfT);
|
}
|
|
/**
|
* 将json字符串转化成实体对象
|
* 示例:new TypeToken<ResultEntity<Bean>>() { }.getType()
|
*/
|
public static <T> T fromJson(String json, Type typeOfT) {
|
return mGson.fromJson(json, typeOfT);
|
}
|
|
/**
|
* 将json字符串转化成实体对象
|
*/
|
public static <T> T fromJson(String json, TypeToken<T> typeToken) {
|
return fromJson(json, typeToken.getType());
|
}
|
|
/**
|
* 将对象准换为json字符串 或者 把list 转化成json
|
*/
|
public static <T> String toJson(T object) {
|
return mGson.toJson(object);
|
}
|
|
/**
|
* 把json 字符串转化成list
|
*/
|
public static <T> List<T> stringToList(String json, Class<T> cls) {
|
Gson gson = new Gson();
|
List<T> 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<String, String> jsonToMap(String jsonStr) {
|
jsonStr = jsonStr.replaceAll("[ ]*", "").replaceAll("[\r\n]*", "")
|
.replace("{\"", "").replace("\"}", "")
|
.replace("\",\"", "&").replace(",\"", "&").replace(",", "&")
|
.replace("\":\"", "=").replace("\":", "=").replace(":", "=");
|
Map<String, String> 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<String, String> map) {
|
|
Set<Map.Entry<String, String>> entrySet = map.entrySet();
|
StringBuilder sb = new StringBuilder();
|
sb.append("{");
|
for (Map.Entry<String, String> 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<String, ?> map) {
|
|
Set<? extends Map.Entry<String, ?>> entrySet = map.entrySet();
|
StringBuilder sb = new StringBuilder();
|
sb.append("{");
|
Object value;
|
for (Map.Entry<String, ?> 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();
|
}
|
|
}
|