Android Studio第二十四期 - Gson封装Utils
16lz
2021-01-23
代码已经整理好,效果如下:
Json.Utils:
import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.google.gson.JsonArray;import com.google.gson.JsonElement;import com.google.gson.JsonObject;import com.google.gson.JsonParseException;import com.google.gson.JsonParser;import com.haiersmart.utilslib.data.StringUtil;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import java.util.ArrayList;import java.util.List;public class JsonUtils { /** 获取Gson实例 **/ private static Gson getInstance() { GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.setDateFormat("yyyy-MM-dd HH:mm:ss"); gsonBuilder.registerTypeAdapter(Object.class, new NaturalDeserializer()); Gson gson = gsonBuilder.create(); return gson; } /** * 解析集合 * * @param json * 数据 * @param beanClass * 泛型 * @return 泛型集合 */ public staticList getBeanList(String json, Class beanClass) { return getBeanList(json, null, beanClass); } /** * 解析集合 * * @param json * @param key * json数据key * @param beanClass * 泛型 * @return 泛型集合 */ public static List getBeanList(String json, String key, Class beanClass) { JsonParser parser = new JsonParser(); Gson gson = getInstance(); JsonElement contentElement = null; List elementList = new ArrayList ();// try {// @SuppressWarnings("unused")// JSONObject object = new JSONObject(json);// } catch (JSONException e1) {// return elementList;// } if (StringUtil.isBlank(key) || StringUtil.isBlank(json)) { contentElement = parser.parse(json).getAsJsonArray(); } else { JsonObject jsonObject = parser.parse(json).getAsJsonObject(); contentElement = jsonObject.get(key); } if (StringUtil.isBlank(contentElement)) return elementList; if (contentElement.isJsonArray()) { JsonArray jsonArray = contentElement.getAsJsonArray(); try { for (int i = 0; i < jsonArray.size(); i++) { JsonElement jsonObj = jsonArray.get(i); T entity = gson.fromJson(jsonObj, beanClass); elementList.add(entity); } } catch (ClassCastException e) { } catch (JsonParseException e) { } return elementList; } return elementList; } /** * 解析单个bean * * @param json * @param clazz * @return 泛型 */ public static T getBean(String json, final Class clazz) { return getBean(json, null, clazz); } /** * 解析单个bean * * @param json * @param key * 解析的json数据key * @param clazz * @return 泛型 */ @SuppressWarnings("unchecked") public static T getBean(String json, String key, final Class clazz) { JsonParser parser = new JsonParser(); Gson gson = getInstance(); JsonElement contentElement = null; try { @SuppressWarnings("unused") JSONObject object = new JSONObject(json); } catch (JSONException e1) { return null; } if (StringUtil.isBlank(key)) { contentElement = parser.parse(json).getAsJsonObject(); } else { JsonObject jsonObject = parser.parse(json).getAsJsonObject(); contentElement = jsonObject.get(key); } if (StringUtil.isBlank(contentElement)) return null; if (contentElement.isJsonPrimitive()) { if (clazz == String.class) { return (T) contentElement.getAsString(); } else if (clazz == Integer.class) { return (T) Integer.valueOf(contentElement.getAsString()); } else if (clazz == Number.class) { return (T) contentElement.getAsNumber(); } } else if (contentElement.isJsonObject()) { JsonObject contentObj = contentElement.getAsJsonObject(); T content = null; try { content = gson.fromJson(contentObj, clazz); } catch (ClassCastException e) { } catch (JsonParseException e) { System.out.println(e.getStackTrace().toString()); } return content; } return null; } /** * 根据key 解析相关字段 * * @param json * @param key * @return */ public static Object getObjectByKey(String json, String key, String targetkey) { JsonParser parser = new JsonParser(); JsonElement jsonElement; try { JsonObject jsonObject = parser.parse(json).getAsJsonObject(); jsonElement = jsonObject.get(key); return jsonElement.getAsJsonObject().get(targetkey).toString(); } catch (Exception e) { return null; } } /** JSONObject生成Json字符串 **/ public static String getJSONStringByJSONObject(JSONObject jsonobject) { String s; if (jsonobject == null) s = ""; else s = jsonobject.toString(); return s; } /** 解析JSONObject Json字符串 **/ public static JSONObject getJSONObjectByJSONString(String str) { str = str.replace("\ufeff", ""); JSONObject jsonobject; if (str != null) try { jsonobject = new JSONObject(str); } catch (JSONException _ex) { jsonobject = null; } else jsonobject = null; return jsonobject; } /** 解析JSONArray Json字符串 **/ public static JSONArray getJSONArrayByJSONString(String str) { JSONArray jsonarray; if (str != null) try { jsonarray = new JSONArray(str); } catch (JSONException _ex) { jsonarray = null; } else jsonarray = null; return jsonarray; }}
总结:现在的项目都是fastjson和Gson一起的,大家需要自己封装好util方便调用~
更多相关文章
- 【实战】android获取天气情况(Json来返回数据)
- Android保存图片到本地或者数据库,并通知相册更新
- 转:Android联系人数据库全解析
- FregServer进程,封装进程间通信数据
- Delphi获取Android下GPS的NMEA 0183数据
- Android中Json数据解析
- Android之使用HttpPost提交数据到服务器(Android手机客户端和后台
- Android:数据存储之SQLite