FasterXML / FasterXML/jackson-modules-java8

`WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS`/`READ_DATE_TIMESTAMPS_AS_NANOSECONDS` only work on numeric timestamps

Aberta
#374 31 comentários 1 reação 0 responsáveis Ver no GitHub
date-time-config
Linguagem predominante
Java
Estrelas
425
Forks
124
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

Hello.

I'm using Spring Boot `3.5.6` with Java `25` and I need a way to have Jackson to serialize/deserialize date-time values up to milliseconds precision and not higher (nanoseconds, actually).

I tried setting `write-date-timestamps-as-nanoseconds` and `read-date-timestamps-as-nanoseconds` to `false`, but it looks like they're simply ignored if I don't have `write-dates-as-timestamps` to `true`.
Indeed, I would like to have my JSON contain a date-time in the ISO standard format and not as a long value, but I wasn't able to find anything in the documentation for this.
I wonder why such a feature is provided only for numeric timestamps. It should work for both IMHO.

Below a small test case to reproduce the issue:
```java
@SpringBootTest(
webEnvironment = MOCK,
properties = {
//"spring.jackson.serialization.write-dates-as-timestamps=true",
"spring.jackson.serialization.write-date-timestamps-as-nanoseconds=false",
"spring.jackson.deserialization.read-date-timestamps-as-nanoseconds=false"
}
)
public class ObjectMapperTest {
@Autowired
private ObjectMapper objectMapper;

@Test
public void shouldHandleDateTimeUpToMillis() throws JsonProcessingException {
// given
Instant instant = Instant.now().with(NANO_OF_SECOND, 1);
assertThat(instant.getNano()).isNotZero();

// when
String serialized = objectMapper.writeValueAsString(instant);

// then
Instant deserialized = objectMapper.readValue(serialized, Instant.class);
assertThat(deserialized).isEqualTo(instant.truncatedTo(MILLIS));
}
}
```

Guia de contribuição

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

Direção de pesquisa

Comece com o ObjectMapperTest fornecido e inspecione o tratamento de data/hora do Java 8 no módulo do Jackson para Instant, incluindo os testes existentes de serialização e desserialização. Confirme o comportamento atual com as duas propriedades de nanossegundos enquanto timestamps em strings ISO são usados; considera-se concluído quando o teste preserva a precisão de milissegundos sem exigir timestamps numéricos.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
java
Domínio
backend
Tipo de issue
Funcionalidade
Dificuldade
4/5
Tempo estimado
3-5 dias
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
35/100

Receba novas issues na sua caixa de entrada

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