1. 程式人生 > >利用Google Gson實現JSON字串和物件之間相互轉換

利用Google Gson實現JSON字串和物件之間相互轉換

最近一個專案需要用到JSON,需要在JSON字串和物件之間相互轉換,在網上找了些資料,發現google的Gson還是比較不錯的。 廢話不說,下面是簡單的例子: 先上原始碼:下載(包含jar包) Person實體類 package com.hsun.json; /** * Person 實體類 * @author hsun * */ public class Person { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } @Override public String toString() { return "Person [id=" + id + ", 姓名=" + name + ", 年齡=" + age + "]"; } } 實體很簡單,當然Person的欄位也可以是List、Set、Map等~~~ 把物件轉為JSON格式的字串 Gson gs = new Gson(); Person person = new Person(); person.setId(1); person.setName("我是醬油"); person.setAge(24); String objectStr = gs.toJson(person);//把物件轉為JSON格式的字串 System.out.println("把物件轉為JSON格式的字串/// "+objectStr); 上面的程式碼重點是Gson物件,它提供了toJason()方法將物件轉換成Json字串,上面程式碼的objectStr物件值為: {"id":1,"name":"我是醬油","age":24} 把List轉為JSON格式的字串 Gson gs = new Gson(); List persons = new ArrayList(); for (int i = 0; i < 10; i++) {//初始化測試資料 Person ps = new Person(); ps.setId(i); ps.setName("我是第"+i+"個"); ps.setAge(i+10); persons.add(ps); } String listStr = gs.toJson(persons);//把List轉為JSON格式的字串 System.out.println("把list轉為JSON格式的字串/// "+listStr); 上面程式碼的listStr物件值為: [{"id":0,"name":"我是第0個","age":10},{"id":1,"name":"我是第1個","age":11},{"id":2,"name":"我是第2個","age":12},{"id":3,"name":"我是第3個","age":13},{"id":4,"name":"我是第4個","age":14},{"id":5,"name":"我是第5個","age":15},{"id":6,"name":"我是第6個","age":16},{"id":7,"name":"我是第7個","age":17},{"id":8,"name":"我是第8個","age":18},{"id":9,"name":"我是第9個","age":19}] 很標準的json資料~~~ 下面來看看gson的反序列化,Gson提供了fromJson()方法來實現從Json相關物件到java實體的方法。 我們一般都會碰到兩種情況,1:轉成單一實體物件  2:轉換成物件列表或者其他結構。 先看第一種: JSON字串為上面的objectStr:{"id":1,"name":"我是醬油","age":24} 程式碼:         Person jsonObject = gs.fromJson(objectStr, Person.class);//把JSON字串轉為物件         System.out.println("把JSON字串轉為物件///  "+jsonObject.toString()); 提供兩個引數,分別是json字串以及需要轉換物件的型別。 第二種,轉換成列表型別: JSON字串為上面的listStr:[{"id":0,"name":"我是第0個","age":10},{"id":1,"name":"我是第1個","age":11},{"id":2,"name":"我是第2個","age":12},{"id":3,"name":"我是第3個","age":13},{"id":4,"name":"我是第4個","age":14},{"id":5,"name":"我是第5個","age":15},{"id":6,"name":"我是第6個","age":16},{"id":7,"name":"我是第7個","age":17},{"id":8,"name":"我是第8個","age":18},{"id":9,"name":"我是第9個","age":19}] 程式碼: List jsonListObject = gs.fromJson(listStr, new TypeToken>(){}.getType());//把JSON格式的字串轉為List         for (Person p : jsonListObject) {             System.out.println("把JSON格式的字串轉為List///  "+p.toString());         } 可以看到上面的程式碼使用了TypeToken,它是Gson提供的資料型別轉換器,可以支援各種資料集合型別轉換。 Gson的基本使用就這麼多,其他請參考官方文件,希望對你們有幫助~~~ --------------------- 本文來自 hsun924 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/hsun924/article/details/8446743?utm_source=copy