* 谷歌開原項目GitHub地址:https://github.com/google/gson
1.新建一個maven項目,引入gson的dependency坐標依賴以及commons-io的坐標:
<!--處理json格式數據--> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.4</version> </dependency> <!--做io文件的操作--> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>
2.編寫一個Student 的JavaBean:
package com.wxd.basic.gson; import java.util.Arrays; public class Student { private String name; private Integer age; private String birthday; private String[] major; private boolean has_girl_friend; private String car; private String house; private String comment; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } public String[] getMajor() { return major; } public void setMajor(String[] major) { this.major = major; } public boolean isHas_girl_friend() { return has_girl_friend; } public void setHas_girl_friend(boolean has_girl_friend) { this.has_girl_friend = has_girl_friend; } public String getCar() { return car; } public void setCar(String car) { this.car = car; } public String getHouse() { return house; } public void setHouse(String house) { this.house = house; } public String getComment() { return comment; } public void setComment(String comment) { this.comment = comment; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + ", birthday='" + birthday + '\'' + ", major=" + Arrays.toString(major) + ", has_girl_friend=" + has_girl_friend + ", car='" + car + '\'' + ", house='" + house + '\'' + ", comment='" + comment + '\'' + '}'; } }
3.編寫GsonSample解析類
package com.wxd.basic.gson; import com.google.gson.FieldNamingStrategy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.lang.reflect.Field; public class GsonSample { public static void main(String[] args){ Student s=new Student(); s.setName("張三"); s.setAge(23); s.setBirthday("1995-06-30"); s.setMajor(new String[]{"打球","看書"}); s.setHas_girl_friend(false); s.setCar(null); s.setHouse(null); s.setComment("這是一個注釋!"); GsonBuilder gsonBuilder=new GsonBuilder();
//gsonBuilder.setDateFormat("yyyy-MM-dd").create();日期格式轉換 gsonBuilder.setPrettyPrinting();//這樣設置后通過GsonBuilder構建的Gson對象打印出來是美化過的json格式數據 gsonBuilder.setFieldNamingStrategy(new FieldNamingStrategy() { @Override public String translateName(Field field) { if(field.getName().equals("name")){ return "NAME";//修改了name屬性 } return field.getName(); } }); Gson gson=gsonBuilder.create(); // Gson gson=new Gson(); System.out.println(gson.toJson(s)); } }
4.控制台輸出
①通過new Gson()的方式構建后的打印輸出:
{"name":"張三","age":23,"birthday":"1995-06-30","major":["打球","看書"],"has_girl_friend":false,"comment":"這是一個注釋!"}
②通過GsonBuilder的方式構建Gson對象后輸出:
{
"NAME": "張三",
"age": 23,
"birthday": "1995-06-30",
"major": [
"打球",
"看書"
],
"has_girl_friend": false,
"comment": "這是一個注釋!"
}
5.使用Gson解析json格式數據:
package com.wxd.basic.gson; import com.google.gson.Gson; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; public class GsonReadSample { public static void main(String[] args){ File file=new File(GsonReadSample.class.getResource("/Student.json").getFile()); try { String content = FileUtils.readFileToString(file);//如果不知道怎么讀文件可以自己手動寫個json字符串如下(把這行注釋掉,下面的放開就行): // String content="{\n" + // " \"NAME\": \"張三\",\n" + // " \"age\": 23,\n" + // " \"birthday\": \"1995-06-30\",\n" + // " \"major\": [\n" + // " \"打球\",\n" + // " \"看書\"\n" + // " ],\n" + // " \"has_girl_friend\": false,\n" + // " \"comment\": \"這是一個注釋!\"\n" + // "}"; Gson gson=new Gson(); Student student = gson.fromJson(content, Student.class); System.out.println(student); } catch (IOException e) { e.printStackTrace(); } } }
6.控制台輸出:
Student{name='null', age=23, birthday='1995-06-30', major=[打球, 看書], has_girl_friend=false, car='null', house='null', comment='這是一個注釋!'}