有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Jackson不反序列化Kotlin数据类中的列表字段

我正在用Kotlin构建一个简单的Spring引导服务。我有一个终点

@GetMapping("/summary")
fun getLoginReport(params: SummaryRequest): ResponseEntity<LoginSummaryResponse> { 
// not important
}

SummaryRequest类的定义如下

data class SummaryRequest(
    val groupBy: List<SummaryGroupBy>
)

SummaryGroupBy是一个枚举类。如果我发出一个传递单个groupBy参数(/summary?groupBy=region)的请求,那么数据类对象将成功构建。但是如果我通过几个groupBy(/summary/groupBy=region,date),我会得到以下错误:

[Field error in object 'SummaryRequest' on field 'groupBy': rejected value [region,date]; codes [typeMismatch.SummaryRequest.groupBy,typeMismatch.groupBy,typeMismatch.java.util.List,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [SummaryRequest.groupBy,groupBy]; arguments []; default message [groupBy]]; default message [Failed to convert value of type 'java.lang.String[]' to required type 'java.util.List'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [api.domain.SummaryGroupBy] for value 'region,date'; nested exception is java.lang.IllegalArgumentException: No enum constant api.domain.SummaryGroupBy.REGION,DATE]]

但是,有趣的是,如果我将SummaryRequest更改为一个常规类(如下所示),它就会起作用。所以,我对它为什么不适用于数据类感到困惑

class SummaryRequest {
    var groupBy: List<SummaryGroupBy> = ArrayList
}

我有jackson-module-kotlin作为依赖项。 为什么Jackson不能反序列化数据类中的列表? 有解决办法吗


共 (0) 个答案