使用 Jackson 使用模式反序列化 属性

Deserialize Property with pattern using Jackson

我正在使用一个请求,它的参数名称是 __parameter10/02/2020,日期已发送到请求中。 有没有办法使用 属性 注释反序列化它?另外,我如何使用自定义序列化程序执行此操作? Json 样本:

{"yearly_return10/02/2020" : "2.87", "__monthlyreturn_current10/02/2020": "-0.0853703899653",}

你可以试试@JsonAnySetter

class Response {
    lateinit var yearlyReturn: BigDecimal
    lateinit var monthlyReturnCurrent: BigDecimal

    @JsonAnySetter
    fun set(key: String, value: String) {
        when {
            key.contains("yearly_return") -> yearlyReturn = BigDecimal(value)
            key.contains("monthlyreturn_current") -> monthlyReturnCurrent = BigDecimal(value)
        }
    }
}

val objectMapper: ObjectMapper = ObjectMapper().registerModules(
        ParameterNamesModule(),
        Jdk8Module(),
        JavaTimeModule(),
        KotlinModule()
)

val response = objectMapper.readValue<Response>("""{"yearly_return10/02/2020" : "2.87", "__monthlyreturn_current10/02/2020": "-0.0853703899653"}""")