android gson教程,Android Gson使用详解

一、Gson的基本用法

1.1、Gson对象

在进行序列化与反序列操作前,需要先实例化一个 com .google.gson.Gson 对象,获取 Gson 对象的方法有两种//通过构造函数来获取

Gson gson = new Gson();        //通过 GsonBuilder 来获取,可以进行多项特殊配置

Gson gson = new GsonBuilder().create();

1.2、生成 Json

利用 Gson 可以很方便地生成 Json 字符串,通过使用 addProperty 的四个重载方法public static void main(String[] args) {

JsonObject jsonObject = new JsonObject();

jsonObject.addProperty("String", "leavesC");

jsonObject.addProperty("Number_Integer", 23);

jsonObject.addProperty("Number_Double", 22.9);

jsonObject.addProperty("Boolean", true);

jsonObject.addProperty("Char", 'c');

System.out.println();

System.out.println(jsonObject);

}

AAffA0nNPuCLAAAAAElFTkSuQmCC

addProperty 方法底层调用的是 add(String property, JsonElement value) 方法,即将基本数据类型转化为了 JsonElement 对象,JsonElement 是一个抽象类,而 JsonObject 继承了 JsonElement ,因此我们可以通过 JsonObject 自己来构建一个 JsonElementpublic static void main(String[] args) {

JsonObject jsonObject = new JsonObject();

jsonObject.addProperty("String", "leavesC");

jsonObject.addProperty("Number", 23);

jsonObject.addProperty("Number", 22.9);

jsonObject.addProperty("Boolean", true);

jsonObject.addProperty("Char", 'c');

JsonObject jsonElement = new JsonObject();

jsonElement.addProperty("Boolean", false);

jsonElement.addProperty("Double", 25.9);

jsonElement.addProperty("Char", 'c');

jsonObject.add("JsonElement", jsonElement);

System.out.println();

System.out.println(jsonObject);

}

AAffA0nNPuCLAAAAAElFTkSuQmCC

1.3、Json与数组、List的转化

Json数组 与 字符串数组public static void main(String[] args) {        //Json数组 转为 字符串数组

Gson gson = new Gson();

String jsonArray = "[\"https://github.com/leavesC\",\"https://www.jianshu.com/u/9df45b87cfdf\",\"Java\",\"Kotlin\",\"Git\",\"GitHub\"]";

String[] strings = gson.fromJson(jsonArray, String[].class);

System.out.println("Json数组 转为 字符串数组: ");        for (String string : strings) {

System.out.println(string);

}        //字符串数组 转为 Json数组

jsonArray = gson.toJson(jsonArray, new TypeToken() {

}.getType());

System.out.println("\n字符串数组 转为 Json数组: ");

System.out.println(jsonArray);

}

AAffA0nNPuCLAAAAAElFTkSuQmCC

Json数组 与 Listpublic static void main(String[] args) {        //Json数组 转为 List

Gson gson = new Gson();

String jsonArray = "[\"https://github.com/leavesC\",\"https://www.jianshu.com/u/9df45b87cfdf\",\"Java\",\"Kotlin\",\"Git\",\"GitHub\"]";

List stringList = gson.fromJson(jsonArray, new TypeToken>() {

}.getType());

System.out.println("\nJson数组 转为 List: ");        for (String string : stringList) {

System.out.println(string);

}        //List 转为 Json数组

jsonArray = gson.toJson(stringList, new TypeToken>() {

}.getType());

System.out.println("\nList 转为 Json数组: ");

System.out.println(jsonArray);

}

AAffA0nNPuCLAAAAAElFTkSuQmCC

1.4、序列化与反序列化

Gson 也提供了 toJson() 和 fromJson() 两个方法用于转化 Model 与 Json,前者实现了序列化,后者实现了反序列化

首先,声明一个 User 类/**

* 作者:chenZY

* 时间:2018/3/17 18:32

* 描述:https://github.com/leavesC

*/public class User {    private String name;    private int age;    private boolean sex;    public User(String name, int age, boolean sex) {        this.name = name;        this.age = age;        this.sex = sex;

}    @Override

public String toString() {        return "User{" +                "name='" + name + '\'' +                ", age=" + age +                ", sex=" + sex +                '}';

}

}

序列化的方法很简单,调用 gson 对象的 toJson 方法,传入要序列化的对象public static void main(String[] args) {        //序列化

User user = new User("leavesC", 24, true);

Gson gson = new Gson();

System.out.println();

System.out.println(gson.toJson(user));

}

AAffA0nNPuCLAAAAAElFTkSuQmCC

反序化的方式也类似public static void main(String[] args) {        //反序列化

String userJson = "{\"name\":\"leavesC\",\"age\":24,\"sex\":true}";

Gson gson = new Gson();

User user = gson.fromJson(userJson, User.class);

System.out.println();

System.out.println(user);

}

二、属性重命名

继续使用上一节声明的 User 类,根据 User 类声明的各个属性名,移动端的开发者希望接口返回的数据格式即是如下这样的{"name":"leavesC",

你可能感兴趣的:(android,gson教程)