在Java中,使用JSON格式來傳遞和存儲數(shù)據(jù)已經(jīng)成為一種非常普遍的方式。然而,有時候我們需要將復(fù)雜的Java對象轉(zhuǎn)換成JSON,或者從JSON轉(zhuǎn)換回Java對象。這種轉(zhuǎn)換是比較復(fù)雜的,因為涉及到對象的嵌套等問題。下面我們介紹Java中如何完成這種復(fù)雜對象的轉(zhuǎn)換。
第一步是要先引入相關(guān)的JSON庫,這里我們使用Google的Gson庫,可以通過Maven等工具自動引入:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
接下來假設(shè)我們有一個復(fù)雜的Java對象:
public class User {
private String name;
private int age;
private List<Address> addresses;
// getters and setters
}
public class Address {
private String city;
private String street;
// getters and setters
}
首先我們通過Gson庫來創(chuàng)建一個Gson對象:
Gson gson = new Gson();
我們可以將Java對象轉(zhuǎn)換為JSON字符串:
User user = new User();
user.setName("Tom");
user.setAge(20);
List<Address> addresses = new ArrayList<>();
Address addr1 = new Address();
addr1.setCity("Shanghai");
addr1.setStreet("Nanjing Road");
Address addr2 = new Address();
addr2.setCity("Beijing");
addr2.setStreet("Wangfujing Street");
addresses.add(addr1);
addresses.add(addr2);
user.setAddresses(addresses);
String json = gson.toJson(user);
// json字符串為:
// {"name":"Tom","age":20,"addresses":[{"city":"Shanghai","street":"Nanjing Road"},{"city":"Beijing","street":"Wangfujing Street"}]}
如果我們需要將JSON字符串轉(zhuǎn)換回Java對象,可以使用fromJson()方法:
String jsonStr = "{\"name\":\"Tom\",\"age\":20,\"addresses\":[{\"city\":\"Shanghai\",\"street\":\"Nanjing Road\"},{\"city\":\"Beijing\",\"street\":\"Wangfujing Street\"}]}";
User user = gson.fromJson(jsonStr, User.class);
如果JSON中涉及到了日期類型等復(fù)雜的數(shù)據(jù)類型,可以通過自定義TypeAdapter來實現(xiàn):
Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new DateTypeAdapter()).create();
以上就是Java中使用Gson庫進(jìn)行JSON復(fù)雜對象轉(zhuǎn)換的方法。