跳至主要內容

Jackson

chanchaw小于 1 分钟languagejava

序列化与反序列化

通过下面的方法可以序列化和反序列化一个对象

@Test
void testJSON2Object() throws IOException {

  ObjectMapper mapper = new ObjectMapper();

  PlayerStar4 player = new PlayerStar4();
  player.setName("curry");//我并不知道库里的生日,这里是编造的
  player.setBirthDate(LocalDateTime.of(1986,4,5,12,50));

  //将player对象以JSON格式进行序列化为String对象
  String jsonString = mapper.writeValueAsString(player);
  System.out.println(jsonString);

  //将JSON字符串反序列化为java对象
  PlayerStar4 curry = mapper.readValue(jsonString, PlayerStar4.class);
  System.out.println(curry);

}

但是日期类型 LocalDateTime 会出现下面的问题
LocalDateTime的序列化问题 即序列化可以正常执行,但是反序列化时无法转换为 LocalDateTime 类型的数据

在实体类属性上显式的指定使用序列化和反序列化的自定义类

@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime birthDate;