Как записать оригинал (входную строку) из пользовательского десериализатора JSON - PullRequest
0 голосов
/ 10 сентября 2018

Я анализирую сообщение REST как json, содержащее дату и время UTC.

В некоторых сообщениях дата и время не в формате UTC. Десериализатор запрограммирован на возврат к местному времени. Это нормально.

Но как записать исходную (всю строку json) строку, переданную в анализатор json для устранения неполадок?

Когда я, например, jp.getCurrentLocation (), я получаю только ссылку на поток

Вот код:

public class UtcDateTimeDeserializer extends StdDeserializer<LocalDateTime> {
    private static final Logger LOGGER = LoggerFactory.getLogger(UtcDateTimeDeserializer.class);

    public UtcDateTimeDeserializer() {
        super(LocalDateTime.class);
    }

    @Override
    public LocalDateTime deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException {
        String zonedatetimestring = jp.readValueAs(String.class);
        try {
            ZonedDateTime zonedDateTime = ZonedDateTime.parse(zonedatetimestring);
            LocalDateTime localDateTime =
                LocalDateTime.ofInstant(zonedDateTime.toInstant(), ZoneOffset.systemDefault());
            return localDateTime;
        } catch (DateTimeParseException e) {
            LOGGER.warn("Here I like to log the entire json string, but get only a steam reference... location={}", jp.getCurrentLocation());
            LocalDateTime localDateTime = LocalDateTime.parse(zonedatetimestring);
            return localDateTime;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...