gpt4 book ai didi

jackson - Kotlin:数据类上的 JsonProperty.Access.READ_ONLY

转载 作者:行者123 更新时间:2023-12-02 13:24:27 25 4
gpt4 key购买 nike

我想存档这样的东西:

data class Task(
@JsonProperty("id", access = READ_ONLY)
val id: String?

...
<other params>
...
)

不幸的是,这会导致以下异常:
com.fasterxml.jackson.databind.JsonMappingException:
Argument #0 of constructor [constructor for Task, annotations: [null]]
has no property name annotation;
must have name when multiple-parameter constructor annotated as Creator
at [Source: {"id":"AT-5", ...}; line: 1, column: 1]

at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:305)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:268)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244)
at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:476)
at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:3899)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3794)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2842)

这个有效:
data class Task(
@JsonProperty("id")
val id: String?
)

我试过 @field:JsonProperty无济于事。

如何让这个注释在 Kotlin 中工作?
我使用 dropwizard 1.1.0, jackson 2.8.6

最佳答案

你应该使用 Jackson-Kotlin 模块,然后你就不需要设置 JsonParameter对于每个参数,因为模块将根据 Kotlin 编译器在类中存储的元数据推断其他参数名称。

该模块位于 Github 中,地址为 FasterXML/jackson-module-kotlin

请务必按照说明注册模块,包括 kotlin-reflect依赖于您自己的构建,并使用辅助函数来简化您的 Kotlin 代码。

关于jackson - Kotlin:数据类上的 JsonProperty.Access.READ_ONLY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44109862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com