杰克逊日期从 JSON 文件反序列化错误

我正在尝试将 JSON 文件反序列化为 POJO 对象,但出现错误。


JSON 文件看起来像 (NotificationPOST.json)


  {

   "endDate":"2018-12-27",

   "malfunctionStartDate":"2018-11-20T22:22:22",

   "malfunctionEndDate":"2018-11-21T12:34:46"

   }

POJO类有


 @DateFormat(field = "Start Date", groups = Order.Level2.class)

    @JsonSerialize(using = DateSerializer.class)

    private DateTime startDate;


    @DateFormat(field = "End Date", groups = Order.Level2.class)

    @JsonSerialize(using = DateSerializer.class)

    private DateTime endDate;

自定义 DateSerializer 类


import com.fasterxml.jackson.core.JsonGenerator;

import com.fasterxml.jackson.core.JsonProcessingException;

import com.fasterxml.jackson.databind.JsonSerializer;

import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;

import org.joda.time.DateTime;

import org.joda.time.format.DateTimeFormat;

import org.joda.time.format.DateTimeFormatter;


public class DateSerializer extends JsonSerializer<DateTime> {

    private static DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd");


    public DateSerializer() {

    }


    public void serialize(DateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {

        gen.writeString(formatter.print(value));

    }

}

我试图运行的测试类


@BeforeClass

    public static void init() {

        notificationPOST = new File("src/test/resources/json/NotificationPOST.json");

    }


@Test

public void notificationPayloadToEntityTest () throws IOException {

private ObjectMapper objectMapper = new ObjectMapper();


    NotificationPOST post = objectMapper.readValue(notificationPOST, NotificationPOST.class);

}


森林海
浏览 122回答 1
1回答

慕沐林林

您可以添加jackson-datatype-joda到您的依赖项,然后JodaModule在您的ObjectMapper:ObjectMapper&nbsp;mapper&nbsp;=&nbsp;new&nbsp;ObjectMapper(); mapper.registerModule(new&nbsp;JodaModule());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java