Java Gson 使用,Gson將字串轉為list
阿新 • • 發佈:2019-01-02
Gson 是 Google 提供的用來在 Java 物件和 JSON 資料之間進行對映的 Java 類庫。可以將一個 JSON 字串轉成一個 Java 物件,或者反過來。
物件轉為字串
String ps =gson.toJson(person);
字串轉為物件
Person person =gson.fromJson(json, Person.class);
字串為為list
List<Person> persons =gson.fromJson(json, new TypeToken<List<Person>>()
{}.getType());
物件轉為字串,以鍵值對的方式返回字串。
字串轉為物件,要注意字串的格式。格式與物件轉換的字串一樣,可以參照。
注意:
需要jar包 gson-2.3.jar,可從gson的官方下載所需版本。
字串轉為物件時,""字串轉出來物件為null,"{}" 轉出來有物件,但各個欄位為空值。
物件內有list欄位時,json字串的寫法
json = "{\"id\":2,\"name\":\"abc\",\"books\":[\"xiqu\",\"wenzhang\",\"xiaoshuo\"]}";
json為list的寫法
json = "[{\"id\":2,\"name\":\"abc\",\"books\":[\"xiqu\",\"wenzhang\",\"xiaoshuo\"]},"
+ "{\"id\":3,\"name\":\"def\",\"books\":[\"dianshi\",\"wenzhang\",\"xiaoshuo\"]}]";
程式碼示例:
import java.util.LinkedList; import java.util.List; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; class Person { private long id; private String name; private List<String> books; public Person(long id, String name) { this.id = id; this.name = name; } public Person(long id, String name, List<String> books) { this(id, name); this.books = books; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<String> getBooks() { return books; } public void setBooks(List<String> books) { this.books = books; } public String toString(){ return "Person : { id=" + this.id + " name=" + this.name + " books=" + this.books + " }"; } } public class Gsontest { static Gson gson = new Gson(); public static void main(String[] args) { toJson(); fromJson(); } static void toJson() { List<String> books = new LinkedList<String>(); books.add("abook"); books.add("bbook"); books.add("cbook"); Person person = new Person(1, "xiao", books); // 將一個物件轉為以鍵值對錶示的字串,物件內可包含list等都可以 String ps = gson.toJson(person); System.out.println(ps); // 將一個物件List 轉為以鍵值對錶示的字串 List<Person> persons = new LinkedList<Person>(); persons.add(person); persons.add(new Person(2, "ming", books)); System.out.println(gson.toJson(persons)); } static void fromJson() { // 空字串轉出來物件為null String json = ""; // 提供兩個引數,分別是json字串以及需要轉換物件的型別。 Person person = gson.fromJson(json, Person.class); System.out.println(person); // 注:字串必須在{}內,list型別包含在[]內,否則轉換失敗拋異常 json = "{}"; // {}內無內容,可以轉換成物件,物件不為空,但是各個欄位沒有值 person = gson.fromJson(json, Person.class); System.out.println(person); // 注意鍵值對的寫法,如果轉換出錯,很可能是寫法不對,寫法可以參照由 toJson 轉出來的字串. json = "{\"id\":2,\"name\":\"abc\",\"books\":[\"xiqu\",\"wenzhang\",\"xiaoshuo\"]}"; person = gson.fromJson(json, Person.class); System.out.println(person); // TypeToken,它是gson提供的資料型別轉換器,可以支援各種資料集合型別轉換 json = "[{\"id\":2,\"name\":\"abc\",\"books\":[\"xiqu\",\"wenzhang\",\"xiaoshuo\"]}," + "{\"id\":3,\"name\":\"def\",\"books\":[\"dianshi\",\"wenzhang\",\"xiaoshuo\"]}]"; List<Person> persons = gson.fromJson(json, new TypeToken<List<Person>>() { }.getType()); System.out.println(persons); } }