FasterXML / FasterXML/jackson-modules-java8
OffsetTimeSerializer not writing seconds for time object like 15:30:00Z (where seconds is 00)
- Lingua principale
- Java
- Stelle
- 425
- Fork
- 124
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
When having a `OffsetTime` field with e.g. `15:00:00Z` and serializing this with Jackson it outputs:
`15:00Z` and thus the seconds are lost.
Note I have the time module registered via `JavaTimeModule()`.
Although one could argue that the seconds are not needed this gives some problems when validating outputted data against JSON schema.
when using the JSON schema format `time` then the seconds are expected, see https://json-schema.org/understanding-json-schema/reference/string#dates-and-times
without the seconds the JSON schema validator fails with: The value must be a valid time.
(note I'm using [Justify](https://github.com/leadpony/justify) for schema validation)
Looking at the source code, I see this is done on purpose
https://github.com/FasterXML/jackson-modules-java8/blob/master/datetime/src/main/java/tools/jackson/datatype/jsr310/ser/OffsetTimeSerializer.java#L92-L111
```
private final void _serializeAsArrayContents(OffsetTime value, JsonGenerator g,
SerializerProvider provider)
throws JacksonException
{
g.writeNumber(value.getHour());
g.writeNumber(value.getMinute());
final int secs = value.getSecond();
final int nanos = value.getNano();
if ((secs > 0) || (nanos > 0)) {
g.writeNumber(secs);
if (nanos > 0) {
if(useNanoseconds(provider)) {
g.writeNumber(nanos);
} else {
g.writeNumber(value.get(ChronoField.MILLI_OF_SECOND));
}
}
}
g.writeString(value.getOffset().toString());
}
```
Is it possible to override this behaviour?
Currently I think my only option is create a custom Serializer?
If not possible to override this behaviour would it be at least possible to change this `_serializeAsArrayContents` method from `private` to `protected` so one could simply extend this class and override this method?
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Valutazione
Questa issue non è ancora stata valutata.