FasterXML / FasterXML/jackson-modules-java8

Allow Instant to be serialized as epochSecond without the fraction part

Aberta
#116 20 comentários 4 reações 0 responsáveis Ver no GitHub
date-time-config new-feature
Linguagem predominante
Java
Estrelas
425
Forks
124
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

I have an `Instant` field that represents an epoch timestamp in seconds.

```
@JsonProperty("registered_at")
@JsonFormat(shape = JsonFormat.Shape.NUMBER)
private Instant registeredAt;
```

the mapper is configured this way

```
.featuresToDisable(ADJUST_DATES_TO_CONTEXT_TIME_ZONE,
FAIL_ON_UNKNOWN_PROPERTIES,
WRITE_DATES_AS_TIMESTAMPS,
SORT_PROPERTIES_ALPHABETICALLY)
```

However when this gets serialized as

```
"registered_at" : 1420324047.000000000
```

By looking at the code there's no way to serialize this value as epoch seconds using the standard mechanism.

`InstantSerializerBase.serialize(T value, JsonGenerator generator, SerializerProvider provider)`

```
if (useTimestamp(provider)) {
if (useNanoseconds(provider)) {
generator.writeNumber(DecimalUtils.toBigDecimal(
getEpochSeconds.applyAsLong(value), getNanoseconds.applyAsInt(value)
));
return;
}
generator.writeNumber(getEpochMillis.applyAsLong(value));
return;
}
```

The only option is to use :

```
@JsonGetter("registered_at")
public long getRegisteredAtEpoch() {
return registeredAt.getEpochSecond();
}
```

It could be nice if there could be way to tell jackson to avoid serializing the fraction part.

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.