【实训】Gson的使用方法

额,在说Gson是什么之前。。。

先说说Json是什么。。。


1.JSON

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量的数据交换格式。它使用键值对来保存js对象


形如:

{"name":"linorz"}


多个键值对的话,使用逗号隔开:

{

    "name":"linorz",

    "age":21

}


含有数组的话,使用方括号:

{"array":[1,2,3,4]}


当然“值”可以是json对象,比如:

{

    "person":{

           "name":"linorz",

           "age":21

    }

}


2.GSON

GSON是Google开发的Java API,一般用于转换Java对象和Json对象,也可以生成Json对象和解析Json对象。当让然还有很多其他Json解析工具,但是各有各的优点,在此只介绍GSON

首先当然是如何获得啦

github地址:https://github.com/google/gson


(1)生成Json字符串

值可以是int、string、boolean等,当然JsonObject也可以。如果要生成数组,请使用JsonArray

public static void main(String[] args) {
    JsonObject jo = new JsonObject();
    jo.addProperty("name", "linorz");
    jo.addProperty("age", 21);
    System.out.println(jo.toString());
}
打印结果:{"name":"linorz","age":21}


(2)解析Json字符串

public static void main(String[] args) {
    String json_str = "{\"name\":\"linorz\",\"age\":21}";
    JsonParser jp = new JsonParser();
    JsonElement je = jp.parse(json_str);
    JsonObject jo = je.getAsJsonObject();
    String name = jo.get("name").getAsString();
    int age = jo.get("age").getAsInt();
    System.out.println(name + "," + age);
}
打印结果:linorz,21


(3)根据类生成Json与解析Json

这个其实才是Gson最大的特点,因为可以直接用一个实现类来生成与解析Json,大大地提高了代码的可读性,编写起来也更为容易、方便

比如一个关于学生信息的Json:

{

    "name":"linorz",

    "age":21,

    "subject":["语文","数学","英语"]

}


1)类的实现,将键名作为成员变量,必须实现get和set方法

public class Student {
    String name;
    int age;
    List<String> subject;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public List<String> getSubject() {
        return subject;
    }

    public void setSubject(List<String> subject) {
        this.subject = subject;
    }
}

2)根据类生成Json

public static void main(String[] args) {
    Student s =new Student();
    s.setName("linorz");
    s.setAge(21);
    List<String> list_subject=new ArrayList<String>();
    list_subject.add("语文");
    list_subject.add("数学");
    list_subject.add("英语");
    s.setSubject(list_subject);
    Gson gson = new Gson();
    System.out.println(gson.toJson(s));
}
打印结果:{"name":"linorz","age":21,"subject":["语文","数学","英语"]}

3)根据类解析Json


注意,fromJson中的类必须按上面类的形式实现

public static void main(String[] args) {
    String json_str = "{\"name\":\"linorz\",\"age\":21,\"subject\":[\"语文\",\"数学\",\"英语\"]}";
    Gson gson = new Gson();
    Student s = gson.fromJson(json_str, Student.class);
    System.out.println(s.getName());
    System.out.println(s.getAge());
    for (String str : s.getSubject()) {
        System.out.println(str);
    }
}

打印结果:

linorz
21
语文
数学
英语

3.插件

如果觉得自己写类怕出错,或者麻烦,可以使用一个插件GsonFormat,此插件在Android Studio或IntelliJ IDEA上都有

使用方法很简单

(1)创建一个空类

public class Student2 {
    
}
(2)在空白位置,右键选择>Generate——GsonFormat,快捷键Alt+Insert

【实训】Gson的使用方法

【实训】Gson的使用方法

【实训】Gson的使用方法

即可生成类