Печать отметки времени с 2 ди git секунд в коде Джексона - PullRequest
2 голосов
/ 26 января 2020

Этот код Джексона печатает «2020-01-26T12: 21: 34.223», и мне нужно напечатать только две ди git секунды «34» без десятичных знаков. Как этого добиться?

    ObjectMapper om = new ObjectMapper();
    om.registerModule(new JavaTimeModule());
    om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"));
    LocalDateTime ldt = LocalDateTime.now();
    Map<String,Object> map = new HashMap<>();
    map.put("ldt", ldt);
    String json = om.writeValueAsString(ldt);
    System.out.println(json);

Ответы [ 2 ]

1 голос
/ 26 января 2020

Вы можете добавить withNano(0) к LocalDateTime.now()

LocalDateTime.now().withNano(0);

Ваш код следующий (Просто изменилась одна строка):

    ObjectMapper om = new ObjectMapper();
    om.registerModule(new JavaTimeModule());
    om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"));

    //withNano(0) added
    LocalDateTime ldt = LocalDateTime.now().withNano(0); 

    Map<String,Object> map = new HashMap<>();
    map.put("ldt", ldt);
    String json = om.writeValueAsString(ldt);
    System.out.println(json);

Результат

2020-01-26T21: 33: 53

1 голос
/ 26 января 2020
  1. Вам придется использовать addSerializer() вызов вместо addDeserializer().
  2. Кроме того, вам придется усекать экземпляр LocalDateTime до секунд.
  3. Кажется, нет необходимости устанавливать формат даты для экземпляра ObjectMapper.

Пожалуйста, ознакомьтесь с кодом ниже.

    ObjectMapper om = new ObjectMapper();

    JavaTimeModule jtm = new JavaTimeModule();
    jtm.addSerializer( LocalDateTime.class, new LocalDateTimeSerializer( DateTimeFormatter.ISO_DATE_TIME ) );
    om.registerModule( jtm );
    //om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"));
    LocalDateTime ldt = LocalDateTime.now().truncatedTo( ChronoUnit.SECONDS );
    Map<String,Object> map = new HashMap<>();
    map.put("ldt", ldt);
    String json = om.writeValueAsString(ldt);
    System.out.println(json);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...