一、Jackson對複雜對象的轉換
Jackson是一個高效的json轉換庫,可以將json數據轉換成java對象,同時也支持將java對象轉換成json數據。對於複雜的對象轉換,Jackson也提供了很好的支持。以下是一個示例代碼:
public class User {
private String name;
private int age;
private Address address;
// getter and setter...
}
public class Address {
private String city;
private String street;
// getter and setter...
}
// json字符串
String json = "{\"name\":\"John\",\"age\":25,\"address\":{\"city\":\"New York\",\"street\":\"Wall Street\"}}";
// json轉換成java對象
ObjectMapper objectMapper = new ObjectMapper();
User user = objectMapper.readValue(json, User.class);
// java對象轉換成json
String jsonString = objectMapper.writeValueAsString(user);
上述代碼演示了Json字符串和Java對象之間的相互轉換。通過ObjectMapper.readValue方法,可以將json字符串轉換成對應的Java對象。其中,Address屬性是一個嵌套對象,在轉換時需要另外定義一個Address類。
二、Jackson和Gson
Jackson和Gson是兩個著名的Java Json轉換庫。它們都提供了很好的json轉換功能,但是在某些特定情況下可能會表現出不同的特點。
Jackson曾經因為其高性能而成為很多企業的首選,但是在某些業務場景下可能會出現一些問題。比如,它可能在某些嵌套json數據的解析過程中,會出現類型不匹配的問題。
Gson則相對來說更加靈活,它會自動處理封裝類型、基本類型和List操作,但是其性能相對較低。以下是一個示例代碼:
// Gson示例代碼
Gson gson = new Gson();
User user = gson.fromJson(json, User.class);
String jsonString = gson.toJson(user);
在Gson中,可以直接使用Gson類中的fromJson和toJson方法來進行json數據的轉換,與Jackson相比,其代碼實現更加簡單。但是,如果json數據的複雜度比較高,Gson可能會出現無法解析的情況。
三、Jackson把枚舉轉成對象
Jackson可以將枚舉類型轉換成對象,這在實際開發中非常有用。以下是一個示例代碼:
public enum SexEnum {
MALE("男"),
FEMALE("女");
private String sex;
SexEnum(String sex) {
this.sex = sex;
}
public String getSex() {
return sex;
}
}
public class Person {
private String name;
private int age;
private SexEnum sex;
}
// Person對象轉成json字符串
Person person = new Person();
person.setName("John");
person.setAge(25);
person.setSex(SexEnum.MALE);
ObjectMapper objectMapper = new ObjectMapper();
String jsonStr = objectMapper.writeValueAsString(person);
// json字符串轉成Person對象
Person person2 = objectMapper.readValue(jsonStr, Person.class);
上述代碼演示了如何將枚舉類型轉換成對象。在Person對象中,雖然SexEnum是一個枚舉類型,但是在json數據轉換時,Jackson能夠自動地將其轉換成對應的對象。
四、Jackson轉List
Jackson還可以將json數組轉換成List類型對象。以下是一個示例代碼:
public class Person {
private String name;
private int age;
}
// json數組
String jsonArr = "[{\"name\":\"John\",\"age\":25},{\"name\":\"Lucy\",\"age\":26}]";
// json數組轉成List類型對象
ObjectMapper objectMapper = new ObjectMapper();
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, Person.class);
List<Person> personList = objectMapper.readValue(jsonArr, javaType);
// List類型對象轉成json數組
String jsonString = objectMapper.writeValueAsString(personList);
上述代碼演示了如何將json數組轉換成List類型對象,以及如何將List類型對象轉換成json數組。其中,通過使用objectMapper.getTypeFactory().constructParametricType方法來構造一個List類型的對象,用來指定List中存儲的對象類型。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/289420.html