Add customization option for LocalDateTime handling of seconds and nanos
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 45/100
Direção de pesquisa
Comece por datetime/src/main/java/com/fasterxml/jackson/datatype/jsr310/ser/LocalDateTimeSerializer.java, especialmente por _serializeAsArrayContents por volta da linha 112, e acompanhe como as opções de serialização de LocalDateTime são configuradas. Considera-se concluído quando os usuários puderem optar por emitir segundos e nanos quando forem zero, sem precisar de um serializer ou mapper personalizado.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Hi all,
as seen in https://github.com/FasterXML/jackson-modules-java8/blob/master/datetime/src/main/java/com/fasterxml/jackson/datatype/jsr310/ser/LocalDateTimeSerializer.java method _serializeAsArrayContents line 112, if seconds or nanos are set to 0 in the LocalDateTime object being serialized, they will NOT be included into the resulting JSON.
I understand this might be trying to follow what its toString https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html#toString does, but it is not convenient when senders and receivers either do not understand the LocalDateTime specification or are unable to handle it properly.
Please add a customization option to allow sending seconds and nanos even when set to 0, the only current workaround is to implement a custom serializer and add it to a custom mapper to be passed in whatever configuration needs it, which is not really convenient:
public static class LocalDateTimeWithSecondsSerializer extends StdSerializer<LocalDateTime> {
public LocalDateTimeWithSecondsSerializer() {
super(LocalDateTime.class);
}
@Override
public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider provider) throws IOException {
gen.writeStartArray();
gen.writeNumber(value.getYear());
gen.writeNumber(value.getMonthValue());
gen.writeNumber(value.getDayOfMonth());
gen.writeNumber(value.getHour());
gen.writeNumber(value.getMinute());
gen.writeNumber(value.getSecond());
gen.writeEndArray();
}
}
public static class CustomEntityMapper implements EntityMapper {
private final ObjectMapper objectMapper;
public CustomEntityMapper() {
SimpleModule localDateTimeWithSecondsSerializerModule = new SimpleModule();
localDateTimeWithSecondsSerializerModule.addSerializer(new LocalDateTimeWithSecondsSerializer());
objectMapper = new ObjectMapper()
.registerModule(new JavaTimeModule())
.registerModule(localDateTimeWithSecondsSerializerModule)
.registerModule(new Jdk8Module());
objectMapper.findAndRegisterModules();
}
@Override
public String mapToString(Object object) throws IOException {
return objectMapper.writeValueAsString(object);
}
@Override
public <T> T mapToObject(String source, Class<T> clazz) throws IOException {
return objectMapper.readValue(source, clazz);
}
}
Thanks and cheers
- Linguagem predominante
- Java
- Estrelas
- 426
- Forks
- 128
- Merge médio
- 19min
- PRs com merge (30d)
- 1
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de FasterXML/jackson-modules-java8
-
Validate embedded objects for `ZoneId`, `Period`and `ZoneOffset`Talvez já em andamento @lux-liang assumiu há 27 dias. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 72/100
-
Wrap `DateTimeException`Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
FasterXML/jackson-modules-java8#382 · 3 comentários ·
-
date-time-config
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
FasterXML/jackson-modules-java8#374 · 31 comentários · 1 reação ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
FasterXML/jackson-modules-java8#310 · 1 comentário ·
-
Instants get not deserialized as expected sometimes (millis vs nanos, non-fractional numbers)Abertatest-needed
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
FasterXML/jackson-modules-java8#304 · 3 comentários ·
Todas as issues de FasterXML/jackson-modules-java8
Issues semelhantes
-
False Negative: InnerTypeLastCheck does not report members declared after inner enums or annotationsAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
checkstyle/checkstyle#22027 ·
Mantenedores costumam responder em até 1 dia
-
bug follow-up lane:auto
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Sanne/incus-spawn#1497 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Mantenedores costumam responder em até 1 dia
-
[BUG][RUST] chrono date-time path/query/header params are not serialized as RFC 3339Talvez já em andamento @teovillanueva assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
OpenAPITools/openapi-generator#25297 ·
Mantenedores costumam responder em até 1 dia
-
[CI] NettyClientTest.testServerDisconnection may fail with DisconnectExceptionTalvez já em andamento @yangshangqing95 assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
Mantenedores costumam responder em até 1 dia