【实训】Gson的使用方法

来源:互联网 发布:淘宝内部券是真的吗 编辑:程序博客网 时间:2024/05/17 08:32

额,在说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


即可生成类

原创粉丝点击