Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

228
Visualizações
Kotlin & Jackson: escriba el error al especificar la serialización personalizada para un campo de clase de datos

Tengo una clase de datos de Kotlin que se serializa en JSON en un proyecto de Spring Boot. Me gustaría personalizar cómo se formatea la fecha al serializar a JSON. El nombre del campo debe serializarse utilizando reglas predeterminadas. Eso expresa lo que me gustaría hacer:

 class ZonedDateTimeSerialiser : JsonSerializer<ZonedDateTime>() { @Throws(IOException::class) fun serialize(value: ZonedDateTime, gen: JsonGenerator, serializers: SerializerProvider?) { val parseDate: String? = value.withZoneSameInstant(ZoneId.of("Europe/Warsaw")) .withZoneSameLocal(ZoneOffset.UTC) .format(DateTimeFormatter.ISO_DATE_TIME) gen.writeString(parseDate) } } data class OrderNotesRequest( @JsonSerialize(using = ZonedDateTimeSerialiser::class) val date: ZonedDateTime = ZonedDateTime.now() )

Pero me sale un error de tipo:

 Type mismatch. Required: KClass<out (JsonSerializer<Any!>..JsonSerializer<*>?)> Found: KClass<ZonedDateTimeSerialiser>

Intenté cambiar el parámetro a anotación a contentUsing pero el error de tipo siguió siendo el mismo.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Lo siguiente me funciona

 object JacksonRun { @JvmStatic fun main(args: Array<String>) { val objMapper = ObjectMapper().apply { registerModule(KotlinModule()) } val order = OrderNotesRequest() println(objMapper.writeValueAsString(order)) } } data class OrderNotesRequest( @JsonSerialize(using = ZonedDateTimeSerialiser::class) val date: ZonedDateTime = ZonedDateTime.now() ) class ZonedDateTimeSerialiser : JsonSerializer<ZonedDateTime>() { @Throws(IOException::class) override fun serialize(value: ZonedDateTime, gen: JsonGenerator, serializers: SerializerProvider?) { val parseDate: String = value.withZoneSameInstant(ZoneId.of("Europe/Warsaw")) .withZoneSameLocal(ZoneOffset.UTC) .format(DateTimeFormatter.ISO_DATE_TIME) gen.writeString(parseDate) } }

construir.gradle.kts:

 dependencies { implementation("com.fasterxml.jackson.core:jackson-core:2.13.2") implementation("com.fasterxml.jackson.core:jackson-annotations:2.13.2") implementation("com.fasterxml.jackson.core:jackson-databind:2.13.2") implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.13.0") }

me da salida:

 {"date":"2022-03-21T10:29:19.381498Z"}

Asegúrese de tener la importación correcta para JsonSerializer

 import com.fasterxml.jackson.databind.JsonSerializer

y agregue el marcador de override para serialize el método

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda