我有一个Kotlin数据类,在Sping Boot 项目中被序列化为JSON。我想定制在序列化为JSON时如何格式化日期。字段的名称应该使用默认规则序列化。这表达了我想做的事情:
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()
)
但我得到一个类型错误:
Type mismatch.
Required:
KClass<out (JsonSerializer<Any!>..JsonSerializer<*>?)>
Found:
KClass<ZonedDateTimeSerialiser>
我确实尝试将注解的参数切换为contentUsing
,但类型错误仍然存在。
1条答案
按热度按时间aiazj4mn1#
以下是我的工作
build.gradle.kts:
提供输出:
请务必确保导入了正确的
JsonSerializer
并将
override
标记添加到serialize
方法