JSON(JavaScript Object Notation,JavaScript對象表示法)是一種輕量級的數據交換格式,常用于Web應用程序之間進行數據交換。 jackson是Java編寫的一個開源的JSON處理庫,可以方便地將Java對象轉換為JSON對象,也可以將JSON對象轉化為Java對象。下面是一個簡單的例子:
//JAVA對象轉化為JSON對象 User user = new User(); user.setId(1); user.setName("Tom"); String json = new ObjectMapper().writeValueAsString(user); //結果:"{"id":1,"name":"Tom"}" //JSON對象轉化為JAVA對象 String json = "{\"id\":1,\"name\":\"Tom\"}"; User user = new ObjectMapper().readValue(json, User.class); //結果:User{id=1, name='Tom'}
在使用jackson解析JSON時,需要注意以下幾點:
1. 區分數組和單個對象。
String json = "[{'name':'Tom'},{'name':'Jerry'}]"; List<User> userList = objectMapper.readValue(json, new TypeReference<List<User>>() {});
如果解析的是一個數組,需要使用TypeReference指定JSON字符串序列化后的類型,否則會報錯。
2. 使用@JsonFormat自定義時間格式。
public class User { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; } String json = "{\"createTime\":\"2020-07-01 08:00:00\"}"; User user = objectMapper.readValue(json, User.class);
通過@JsonFormat注解,可以指定時間類型字段的格式,避免在解析時出現格式轉換錯誤。
3. 處理未知字段。
public class User { @JsonIgnoreProperties(ignoreUnknown = true) private String name; } String json = "{\"name\":\"Tom\",\"age\":20}"; User user = objectMapper.readValue(json, User.class);
如果JSON字符串中含有未知的字段,通過@JsonIgnoreProperties注解可以忽略解析過程中出現的未知字段。