为了账号安全,请及时绑定邮箱和手机立即绑定

Java 8 LocalDate Jackson格式

Java 8 LocalDate Jackson格式

肥皂起泡泡 2019-08-02 16:22:41
Java 8 LocalDate Jackson格式对于java.util.Date,当我这样做@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy")     private Date dateOfBirth;然后在我发送的JSON请求中{ {"dateOfBirth":"01/01/2000"} }有用。我应该如何为Java 8的LocalDate字段执行此操作?我试过了@JsonDeserialize(using = LocalDateDeserializer.class)  @JsonSerialize(using = LocalDateSerializer.class)  private LocalDate dateOfBirth;它没用。有人可以让我知道这是正确的方法吗?以下是依赖项<dependency>          <groupId>org.jboss.resteasy</groupId>          <artifactId>jaxrs-api</artifactId>          <version>3.0.9.Final</version>       </dependency>       <dependency>          <groupId>com.fasterxml.jackson.jaxrs</groupId>          <artifactId>jackson-jaxrs-json-provider</artifactId>          <version>2.4.2</version>       </dependency>       <dependency>          <groupId>com.wordnik</groupId>          <artifactId>swagger-annotations</artifactId>          <version>1.3.10</version>       </dependency>       <dependency>
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

它们无需导入额外的jsr310模块:

@JsonDeserialize(using = LocalDateDeserializer.class)  @JsonSerialize(using = LocalDateSerializer.class)  private LocalDate dateOfBirth;

解串器:

public class LocalDateDeserializer extends StdDeserializer<LocalDate> {

    private static final long serialVersionUID = 1L;

    protected LocalDateDeserializer() {
        super(LocalDate.class);
    }


    @Override
    public LocalDate deserialize(JsonParser jp, DeserializationContext ctxt)
            throws IOException, JsonProcessingException {
        return LocalDate.parse(jp.readValueAs(String.class));
    }}

串行:

public class LocalDateSerializer extends StdSerializer<LocalDate> {

    private static final long serialVersionUID = 1L;

    public LocalDateSerializer(){
        super(LocalDate.class);
    }

    @Override
    public void serialize(LocalDate value, JsonGenerator gen, SerializerProvider sp) throws IOException, JsonProcessingException {
        gen.writeString(value.format(DateTimeFormatter.ISO_LOCAL_DATE));
    }}


查看完整回答
反对 回复 2019-08-02
?
富国沪深

TA贡献1790条经验 获得超9个赞

   ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JavaTimeModule());
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);

对我来说很好。


查看完整回答
反对 回复 2019-08-02
  • 3 回答
  • 0 关注
  • 487 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信