使用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;  
  
    }  
  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gson 是 Google 提供的一个用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库,它可以将 JSON 字符串转换为 Java 对象,也可以将 Java 对象转换为 JSON 字符串。下面是使用 Gson解析 JSON 数据的示例代码: 1. 添加 GSON 依赖 在项目的 build.gradle 文件中添加以下依赖: ```groovy dependencies { // ... implementation 'com.google.code.gson:gson:2.8.6' // ... } ``` 2. 定义 Java 类 首先,我们需要定义一个 Java 类来表示 JSON 数据的结构。假设我们要解析JSON 数据格式如下: ```json { "name": "张三", "age": 20, "isMale": true } ``` 那么,我们可以定义一个对应的 Java 类: ```java public class Person { private String name; private int age; private boolean isMale; // 构造函数、getters 和 setters 略 // ... } ``` 3. 解析 JSON 数据 接下来,我们可以使用 Gson 类的`fromJson()`方法将 JSON 字符串转换为 Java 对象。示例代码如下: ```java String jsonData = "{\"name\":\"张三\",\"age\":20,\"isMale\":true}"; // 替换成你要解析JSON 数据 Gson gson = new Gson(); Person person = gson.fromJson(jsonData, Person.class); ``` 以上代码中,`fromJson()`方法的第一个参数是要解析JSON 字符串,第二个参数是要转换为的 Java 类的类型。Gson 会自动将 JSON 中的字段映射到 Java 对象的属性中。 现在,`person`对象中就包含了从 JSON 字符串中解析出来的数据。我们可以通过调用`person.getName()`、`person.getAge()`等方法获取属性的值。 注意:使用 Gson 解析 JSON 数据的前提是,JSON 字符串的字段名要与 Java 对象的属性名匹配。如果不匹配,需要通过`@SerializedName`注解或`FieldNamingStrategy`接口来指定对应关系。具体使用方法可以参考 Gson 的文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值