package com.lin.poweradapter.example.util; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; public class JSONUtils { /** * 获取JsonObject * @param json * @return */ public static JsonObject parseJson(String json){ JsonParser parser = new JsonParser(); JsonObject jsonObj = parser.parse(json).getAsJsonObject(); return jsonObj; } /** * 根据json字符串返回Map对象 * @param json * @return */ public static Map<String, Object> toMap(String json){ return toMap(parseJson(json)); } /** * 将JSONObjec对象转换成Map-List集合 * @param json * @return */ public static Map<String, Object> toMap(JsonObject json){ Map<String, Object> map = new HashMap<String, Object>(); Set<Map.Entry<String, JsonElement>> entrySet = json.entrySet(); for (Iterator<Map.Entry<String, JsonElement>> iter = entrySet.iterator(); iter.hasNext(); ){ Map.Entry<String, JsonElement> entry = iter.next(); String key = entry.getKey(); Object value = entry.getValue(); if(value instanceof JsonArray) map.put((String) key, toList((JsonArray) value)); else if(value instanceof JsonObject) map.put((String) key, toMap((JsonObject) value)); else map.put((String) key, value); } return map; } /** * 将JSONArray对象转换成List集合 * @param json * @return */ public static List<Object> toList(JsonArray json){ List<Object> list = new ArrayList<Object>(); for (int i=0; i<json.size(); i++){ Object value = json.get(i); if(value instanceof JsonArray){ list.add(toList((JsonArray) value)); } else if(value instanceof JsonObject){ list.add(toMap((JsonObject) value)); } else{ list.add(value); } } return list; } public static final <T> T toObject(String json, TypeToken<T> typeToken) { try { return new Gson().fromJson(json, typeToken.getType()); } catch (Exception e) { e.printStackTrace(); } return null; } public static final <T> T toObject(String json, Class<T> clazz){ try { return new Gson().fromJson(json, clazz); } catch (Exception e) { e.printStackTrace(); } return null; } public static final <T> T toObject(JSONObject json, Class<T> clazz) { try { return new Gson().fromJson(json.toString(), clazz); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 解析某个json节点对应的内容为对象 * @param json * @param tag * @param clazz * @return */ public static final <T>T toObject(JSONObject json, String tag, Class<T> clazz) { try { if(json.has(tag) && !json.isNull(tag)){ return new Gson().fromJson(json.getJSONObject(tag).toString(), clazz); } } catch (Exception e) { e.printStackTrace(); } return null; } /** * 解析jsonArray节点的数据到集合中 * @param json * @param tag 节点名称 * @param typeToken ,例如: new TypeToken<ArrayList<User>>(){} * @return */ @SuppressWarnings("rawtypes") public static <T> ArrayList<T> toList(JSONObject json, String tag, TypeToken typeToken) { try { if(json.has(tag) && !json.isNull(tag)){ return new Gson().fromJson(json.getJSONArray(tag).toString(), typeToken.getType()); } } catch (JSONException e) { e.printStackTrace(); } return null; } @SuppressWarnings("rawtypes") public static <T> ArrayList<T> toList(String json, TypeToken typeToken) { return new Gson().fromJson(json, typeToken.getType()); } /** * 转换成json * @param list * @return */ @SuppressWarnings("rawtypes") public static String toJson(ArrayList list) { return new Gson().toJson(list); } }