OffsetTimeSerializer not writing seconds for time object like 15:30:00Z (where seconds is 00)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comience con datetime/src/main/java/tools/jackson/datatype/jsr310/ser/OffsetTimeSerializer.java, especialmente _serializeAsArrayContents, y reproduzca la serialización de 15:00:00Z con JavaTimeModule. Confirme la representación temporal esperada en JSON y determine si es apropiado el comportamiento solicitado o un hook de serializador sobrescribible; se considera terminado cuando el comportamiento está cubierto por una prueba de regresión.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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 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?
- Lenguaje dominante
- Java
- Estrellas
- 425
- Forks
- 125
- Merge medio
- 19 min
- PR fusionados (30 d)
- 1
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de FasterXML/jackson-modules-java8
-
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
-
Wrap `DateTimeException` Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
FasterXML/jackson-modules-java8#382 · 3 comentarios ·
-
date-time-config
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
FasterXML/jackson-modules-java8#374 · 31 comentarios · 1 reacción ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
FasterXML/jackson-modules-java8#310 · 1 comentario ·
-
Instants get not deserialized as expected sometimes (millis vs nanos, non-fractional numbers) Abiertotest-needed
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
FasterXML/jackson-modules-java8#304 · 3 comentarios ·
Todos los issues de FasterXML/jackson-modules-java8
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
elastic/gradle-plugins#157 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
cryptomator/hub#497 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
johanhaleby/occurrent#1120 ·