GSON入门

    GSON是Google开发的Java API,用于转换Java对象和Json对象。最近在项目中看到了GSON的使用,简单的一行代码,就可以将JSON数据转换为我们需要的Java对象,根本不需要繁琐地自己去解析JSON数据了。

    使用GSON,首先需要加入maven以来,如下:

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.6.2</version>
        </dependency>

    下面就来看看GSON的基本用法,Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化。同时每个方法都提供了重载方法。

    1. 基本数据类型的生成与解析:

Gson gson = new Gson();
int i = gson.fromJson("100", int.class);              //100
String jsonNumber = gson.toJson(100);       // 100

    2. POJO类的生成与解析:

public class User {
    //省略其它
    public String name;
    public int age;
    public String emailAddress;
}

//生成JSON
Gson gson = new Gson();
User user = new User("xx",11);
String jsonObject = gson.toJson(user); // {"name":"xx","age":11}

//解析JSON
Gson gson = new Gson();
String jsonString = "{\"name\":\"xx\",\"age\":11}";
User user = gson.fromJson(jsonString, User.class);

    3. Gson中使用泛型。在我们处理数据中,往往都会有数组的情况,我们可以直接使用数组处理,也可以使用List处理。

    1)数组处理比较简单,实例如下:

Gson gson = new Gson();
String jsonArray = "[\"Android\",\"Java\",\"PHP\"]";
String[] strings = gson.fromJson(jsonArray, String[].class);

    2)List处理,对于List将上面的代码中的 String[].class 直接改为 List.class 是行不通的。对于Java来说List 和List 这俩个的字节码文件只一个那就是List.class,这是Java泛型使用时要注意的问题 泛型擦除。

    为了解决的上面的问题,Gson为我们提供了TypeToken来实现对泛型的支持,所以当我们希望使用将以上的数据解析为List时需要这样写。

    Gson gson = new Gson();
    String jsonArray = "[\"Android\",\"Java\",\"PHP\"]";
    String[] strings = gson.fromJson(jsonArray, String[].class);
    List<String> stringList = gson.fromJson(jsonArray, new TypeToken<List<String>>() {}.getType());

    注:TypeToken的构造方法是protected修饰的,所以上面才会写成new TypeToken… {}.getType() 而不是 new TypeToken…().getType()

猜你喜欢

转载自blog.csdn.net/u013034223/article/details/78630580