Джексон JSON Дата десериализации в метку времени - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь отобразить JSON в POJO, используя Jackson2 для моего метода REST.Атрибут DueDate в моем POJO имеет тип java.util.date.Я читал, что Джексон по умолчанию десериализует JSON в метку времени.Я хочу только такое поведение.Однако в моем случае Джексон преобразует атрибут dueDate в Date.

Может ли кто-нибудь помочь мне, как заставить Джексона десериализовать dueDate как метку времени .

JSON здесь ...

{"atr1": null, "atr2": null, "dueDate": "2018-07-11"}

POJO здесь ..

public class Sample {
    private String atr1;
    private String atr1;
    private Date dueDate;
}

REST Api ...

    public Response create(String json) {                                        
            ObjectMapper mapper = new ObjectMapper();
            Sample sample1 = mapper.readValue(json,Sample.class);
 }

Спасибо

Подробнее ... тип значения DueDate при вызове метода из фактического объекта пользовательского интерфейса равен Отметка времени

объект enter image description here

Однако, когда JSON передается в REST для вызова метода, тип меняется на Date .enter image description here

Я хочу, чтобы он был Timestamp type.Из-за этого SQL-запрос, который использует dueDate в качестве параметра, не извлекает значение должным образом.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Вы можете использовать java.sql.timestamp в вашем pojo вместо java.util.Date.

import java.sql.Timestamp;

public class sample {
    private String atr1;
    private String atr2;
    private Timestamp dueDate;
}

Вы можете получить метку даты с тем же, что и выше.Я также сделал фрагмент кода для подтверждения, как показано ниже.

 public static void main( String[] args ) throws JsonParseException, JsonMappingException, IOException
    {
        String json = "{ \"atr1\": null, \"atr2\": null, \"dueDate\": \"2018-07-11\" }";
        ObjectMapper mapper = new ObjectMapper();
        sample sample1 = mapper.readValue(json, sample.class);
        System.out.println(sample1.getDueDate());
    }

вывод выше: - 2018-07-11 05:30:00.0

0 голосов
/ 13 сентября 2018

Вы можете использовать @JsonFormat для изменения шаблона даты json следующим образом:

public class Sample {
    private String atr1;
    private String atr1;
    @JsonFormat(shape = JsonFormat.Shape.NUMBER)
    private Date dueDate;
}

Для получения дополнительной информации прочитайте эту ссылку:

https://www.baeldung.com/jackson-jsonformat

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...