android 中Gson的使用和封装

 Gson是android开发中很常用的一个工具类,现在我就介绍下它的大体使用流程:

1首先我们要在build.gradle项目中添加依赖:

implementation 'com.google.code.gson:gson:2.8.1'

2.封装gson的工具类

public class JsonUtil {

   private static Gson gson = new Gson();
   /**
    * 把一个map变成json字符串
    * @param map
    * @return
    */
   public static String parseMapToJson(Map<?, ?> map) {
      try {
         return gson.toJson(map);
      } catch (Exception e) {
      }
      return null;
   }

   /**
    * 把一个json字符串变成对象
    * @param json
    * @param cls
    * @return
    */
   public static <T> T parseJsonToBean(String json, Class<T> cls) {
      T t = null;
      try {
         t = gson.fromJson(json, cls);
      } catch (Exception e) {

      }
      return t;
   }

   /**
    * 把json字符串变成map
    * @param json
    * @return
    */
   public static HashMap<String, Object> parseJsonToMap(String json) {
      Type type = new TypeToken<HashMap<String, Object>>() {
      }.getType();
      HashMap<String, Object> map = null;
      try {
         map = gson.fromJson(json, type);
      } catch (Exception e) {
      }
      return map;
   }

   /**
    * 把json字符串变成集合
    * params: new TypeToken<List<yourbean>>(){}.getType(),
    * 
    * @param json
    * @param type  new TypeToken<List<yourbean>>(){}.getType()
    * @return
    */
   public static List<?> parseJsonToList(String json, Type type) {
      List<?> list = gson.fromJson(json, type);
      return list;
   }

   /**
    * 
    * 获取json串中某个字段的值,注意,只能获取同一层级的value
    * 
    * @param json
    * @param key
    * @return
    */
   public static String getFieldValue(String json, String key) {
      if (TextUtils.isEmpty(json))
         return null;
      if (!json.contains(key))
         return "";
      JSONObject jsonObject = null;
      String value = null;
      try {
         jsonObject = new JSONObject(json);
         value = jsonObject.getString(key);
      } catch (JSONException e) {
         e.printStackTrace();
      }
      return value;
   }

   /**
    * 格式化json
    * @param uglyJSONString
    * @return
     */
   public static String jsonFormatter(String uglyJSONString){
      Gson gson = new GsonBuilder().setPrettyPrinting().create();
      JsonParser jp = new JsonParser();
      JsonElement je = jp.parse(uglyJSONString);
      String prettyJsonString = gson.toJson(je);
      return prettyJsonString;
   }

工具类中有json数据转bean类,json数据转map,json数据转列表,这样我们网络接收的数据就可以直接转换成我们本地的实体类了。

欢迎关注订阅号:

android 中Gson的使用和封装