Jackson是一個(gè)流行的Java庫(kù),用于在Java對(duì)象和JSON格式之間進(jìn)行轉(zhuǎn)換。它提供了許多不同的API來(lái)處理JSON,包括實(shí)現(xiàn)JSON數(shù)據(jù)綁定、樹模型解析和流式處理。
// 示例代碼 public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } // getters and setters } // 將Java對(duì)象轉(zhuǎn)換成JSON字符串 ObjectMapper mapper = new ObjectMapper(); User user = new User("Alice", 25); String jsonStr = mapper.writeValueAsString(user); // 將JSON字符串轉(zhuǎn)換成Java對(duì)象 User userFromJson = mapper.readValue(jsonStr, User.class);
Jackson還允許我們自定義序列化和反序列化過(guò)程。我們可以創(chuàng)建自己的序列化器和反序列化器,或者使用注釋來(lái)指定如何將Java對(duì)象序列化為JSON。
// 示例代碼 public class User { private String name; private int age; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") private Date birthday; // constructors, getters and setters // 自定義日期序列化器 public static class DateSerializer extends JsonSerializer{ private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); @Override public void serialize(Date date, JsonGenerator gen, SerializerProvider provider) throws IOException { String formattedDate = dateFormat.format(date); gen.writeString(formattedDate); } } } // 序列化Java對(duì)象時(shí)使用自定義日期序列化器 ObjectMapper mapper = new ObjectMapper(); SimpleModule module = new SimpleModule(); module.addSerializer(Date.class, new User.DateSerializer()); mapper.registerModule(module); User user = new User("Alice", 25, new Date()); String jsonStr = mapper.writeValueAsString(user); // 反序列化JSON字符串時(shí)自動(dòng)解析日期格式 ObjectMapper mapper = new ObjectMapper(); User userFromJson = mapper.readValue(jsonStr, User.class);
總之,Jackson是一個(gè)強(qiáng)大的庫(kù),可以輕松地處理Java對(duì)象和JSON之間的轉(zhuǎn)換。除了提供標(biāo)準(zhǔn)的JSON數(shù)據(jù)綁定和解析外,它還允許我們自定義序列化和反序列化過(guò)程,以及使用不同的JSON表示形式。