使用gson解析json数据

近期在项目开发中,遇到需要传递大批量数据到安卓端,以前的json解析方法即JsonObject和JsonArray,这对于解析小数据的json数据还是比较实用,但是当解析json数据比较复杂的时候这种方法就显得比较吃力也比较麻烦了,通过Gson解析,就会方便很多。

运用过程中注意toJson,fromJson的意思,源码写的比较直观

public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException {
    Object object = fromJson(json, (Type) classOfT);
    return Primitives.wrap(classOfT).cast(object);

  }

@SuppressWarnings("unchecked")
  public <T> T fromJson(String json, Type typeOfT) throws JsonSyntaxException {
    if (json == null) {
      return null;
    }
    StringReader reader = new StringReader(json);
    T target = (T) fromJson(reader, typeOfT);
    return target;

  }

 public String toJson(Object src) {
    if (src == null) {
      return toJson(JsonNull.INSTANCE);
    }
    return toJson(src, src.getClass());
  }

一个是将对象转换为字符串,一个是将字符串转换为对象,不过要注意校验功能

封装的一个工具类

public class GsonTools {  
  
    /**TODO 转换为json字符串 
     * @param src  要转换成json格式的 对象 
     * @return 
     */  
    public static String createJsonString(Object src) {  
        Gson gson = new Gson();  
        String jsonString = gson.toJson(src);  
        return jsonString;  
    }  
  
  
    /**TODO 转换为指定的 对象 
     * @param jsonString 
     * @param type 指定对象的类型 ,即 T.class 
     * @return 
     */  
    public static <T> T getObject(String jsonString, Class<T> type) {  
        T t = null;  
        try {  
            Gson gson = new Gson();  
            t = gson.fromJson(jsonString, type);  
        } catch (JsonSyntaxException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        return t;  
    }  
  
    /**得到 一个List<T>集合 
     * @param jsonString 
     * @param type  T的类型 
     * @return 
     */  
    public static <T> List<T> getList(String jsonString, Class<T> type) {  
        List<T> list = new ArrayList<T>();  
        Gson gson = new Gson();  
        list = gson.fromJson(jsonString, new TypeToken<List<T>>() {  
        }.getType());  
        return list;  
  
    }  
  
    /**TODO 得到一个List<T> 的集合 
     * @param jsonString json字符串 
     * @param type  数组的类型 ,即T[].class 
     * @return 
     */  
    public static <T> List<T> StringTolist(String jsonString, Class<T[]> type) {  
        T[] list = null;  
        try {  
            Gson gson = new Gson();  
            list = gson.fromJson(jsonString, type);  
        } catch (JsonSyntaxException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
  
        return Arrays.asList(list);  
  
    }  
    /**把json字符串转换为 String 集合 
     * @param jsonString 
     * @return 
     */  
    public static List<String> getStrings(String jsonString) {  
        List<String> list = new ArrayList<String>();  
        Gson gson = new Gson();  
        new TypeToken<List<String>>(){}.getType();  
        list = gson.fromJson(jsonString, new TypeToken<List<String>>() {  
        }.getType());  
        return list;  
  
    }  
  
    /**TODO 将json数据解析为Map<String,Object>集合 
     * @param jsonString  
     * @return 
     */  
    public static List<Map<String, Object>> getMaps(String jsonString) {  
  
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
        Gson gson = new Gson();  
        list = gson.fromJson(jsonString,  
                new TypeToken<List<Map<String, Object>>>() {  
                }.getType());  
  
        return list;  
  
    }  
  

猜你喜欢

转载自blog.csdn.net/m0_37942145/article/details/80277951