我在Kotlin中有一个这样定义的类/接口对:
@JsonDeserialize(`as` = SimpleEvent::class)
interface Event {
val organizationId: UUID
val userId: UUID
val eventTime: LocalDateTime
val eventId: UUID
@get:JsonAnyGetter
@get:JsonAnySetter
val details: Map<String, JsonNode>
}
data class SimpleEvent(
override val organizationId: UUID,
override val userId: UUID,
override val eventTime: LocalDateTime,
override val eventId: UUID,
override val details: Map<String, JsonNode>
) : Event
我的目标是将json文档中的任何额外字段作为details
地图中的条目。 @JsonAnyGetter
和@JsonAnySetter
注释很有希望,但我找不到使@JsonAnySetter
使用不可变构造函数参数的方法。 @JsonAnyGetter
按预期工作,但@JsonAndSetter
似乎被忽略。
答案 0 :(得分:0)
在可变属性上使用@JsonAnySetter
。构造函数参数尚不支持,尽管有一个请求添加:
https://github.com/FasterXML/jackson-databind/issues/562
答案 1 :(得分:0)
作为解决方法,这可行:
@JsonAnySetter
@get:JsonAnyGetter
val others:Map<String,JsonNode> = LinkedHashMap() /* workaround!*/