Gson是一個Java庫,用于將對象轉換為其JSON表示形式,以及將JSON字符串轉換為Java對象。JSONObject和JSONArray是Android提供的JSON庫,但是Gson比它們更方便。以下是使用Gson將對象轉換為JSON字符串和將JSON字符串轉換為對象的示例。
//將Java對象轉換為JSON字符串 Gson gson = new Gson(); Person person = new Person(); person.setName("John"); person.setAge(30); String json = gson.toJson(person); System.out.println(json); //將JSON字符串轉換為Java對象 String json = '{"name":"John", "age":30}'; Person person = gson.fromJson(json, Person.class); System.out.println(person.getName() + " " + person.getAge());
在上面的示例中,我們定義了一個Person類,并使用Gson將其轉換為JSON字符串。我們還演示了如何將JSON字符串轉換回Person對象。
Gson還支持將集合轉換為JSON數組和將JSON數組轉換為集合。以下是一些示例代碼:
//將集合轉換為JSON數組 Gson gson = new Gson(); Listlanguages = new ArrayList (); languages.add("Java"); languages.add("Python"); languages.add("C++"); String json = gson.toJson(languages); System.out.println(json); //將JSON數組轉換為集合 String json = '["Java", "Python", "C++"]'; Type collectionType = new TypeToken >(){}.getType(); List
languages = gson.fromJson(json, collectionType); System.out.println(languages);
在上面的示例中,我們定義了一個字符串列表,并將其轉換為JSON數組。我們還演示了如何將JSON數組轉換為集合。
Gson非常靈活,并允許您自定義序列化和反序列化過程。例如,您可以使用自定義委托來序列化或反序列化特定類型的對象。以下是一些示例代碼:
//自定義委托來序列化和反序列化日期對象 Gson gson = new GsonBuilder() .registerTypeAdapter(Date.class, new JsonSerializer() { public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) { return new JsonPrimitive(src.getTime()); } public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { return new Date(json.getAsJsonPrimitive().getAsLong()); } }) .create(); Date date = new Date(); String json = gson.toJson(date); System.out.println(json); Date date = gson.fromJson(json, Date.class); System.out.println(date);
在上面的示例中,我們定義了一個自定義委托,用于將日期對象序列化為時間戳,并從時間戳反序列化為日期對象。我們注冊此委托以便Gson在遇到日期對象時能夠正確地序列化它們。