gpt4 book ai didi

kotlin - jackson 无法反序列化一些非空字段

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

我对对象反序列化有问题。

我的DTO包含一个配对列表(以前的版本是Map)。

data class MyDto(
@JsonIgnoreProperties(ignoreUnknown = true)
val myField: List<Pair<String, Boolean>>?
)

而且我不断收到 MissingKotlinParameterException
com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException: Instantiation of [simple type, class kotlin.Pair<java.lang.String,java.lang.Boolean>] value failed for JSON property first due to missing (therefore NULL) value for creator parameter first which is a non-nullable type\n at [Source: (io.netty.buffer.ByteBufInputStream); line: 9, column: 33] (through reference chain: my.path.MyDto[\"field\"]->java.util.ArrayList[0]->kotlin.Pair[\"first\"])\n\tat org.springframework.http.codec.json.AbstractJackson2Decoder.processException(AbstractJackson2Decoder.java:162)

我的json看起来像:
{
"myField" : [
"A": true,
"B": false
]
}

如您所见,我已经使列表可以为空,并添加了一个注释 @JsonIgnoreProperties。但是我仍然得到错误。

我对objectMapper的配置
@Bean
@Primary
fun objectMapper(): ObjectMapper = jacksonObjectMapper().apply {
findAndRegisterModules()

.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.disable(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS)

.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES)
.disable(DeserializationFeature.FAIL_ON_NULL_CREATOR_PROPERTIES)
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.disable(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT)
.disable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)
.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
.enable(DeserializationFeature.ACCEPT_FLOAT_AS_INT)
}

我还应该启用/禁用什么才能使其正常工作?

最佳答案

尝试更换

List<Pair<String, Boolean>>
Map<String, Boolean>
并将JSON更改为:
{
"myField" : {
"A": true,
"B": false
}
}
现在应该可以正常工作了。

关于kotlin - jackson 无法反序列化一些非空字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57408809/

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