FasterXML / FasterXML/jackson-modules-java8

Allow Instant to be serialized as epochSecond without the fraction part

Aperta
#116 20 commenti 4 reazioni 0 assegnatari Vedi su GitHub
date-time-config new-feature
Lingua principale
Java
Stelle
425
Fork
124
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.