【实训】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
即可生成类