Class Jackson从使用openapi codegen生成的API返回LinkedHashMap

Class Jackson从使用openapi codegen生成的API返回LinkedHashMap,class,kotlin,jackson,moshi,openapi-generator,Class,Kotlin,Jackson,Moshi,Openapi Generator,我有一个提供openapi.json规范的Java后端。其目的是通过openapi生成器创建API客户机。这就是我所做的。客户端表现得很好,每个类都很完美,它们都有它们应该拥有的属性,等等。这类课程就是一个例子: public final data class Project public constructor( name: kotlin.String, title: kotlin.String, previewUrl: kotlin.String, conne

我有一个提供openapi.json规范的Java后端。其目的是通过openapi生成器创建API客户机。这就是我所做的。客户端表现得很好,每个类都很完美,它们都有它们应该拥有的属性,等等。这类课程就是一个例子:

public final data class Project public constructor(
    name: kotlin.String,
    title: kotlin.String,
    previewUrl: kotlin.String,
    connections: kotlin.collections.List<kotlin.String>? /* = compiled code */,
    mapWindows: kotlin.collections.List<kotlin.String>? /* = compiled code */,
    ribbons: kotlin.collections.List<kotlin.String>? /* = compiled code */
) {
    @field:com.fasterxml.jackson.annotation.JsonProperty public final val connections: kotlin.collections.List<kotlin.String>? /* compiled code */
    @field:com.fasterxml.jackson.annotation.JsonProperty public final val mapWindows: kotlin.collections.List<kotlin.String>? /* compiled code */
    @field:com.fasterxml.jackson.annotation.JsonProperty public final val name: kotlin.String /* compiled code */
    @field:com.fasterxml.jackson.annotation.JsonProperty public final val previewUrl: kotlin.String /* compiled code */
    @field:com.fasterxml.jackson.annotation.JsonProperty public final val ribbons: kotlin.collections.List<kotlin.String>? /* compiled code */
    @field:com.fasterxml.jackson.annotation.JsonProperty public final val title: kotlin.String /* compiled code */
}
公共最终数据类项目公共构造函数(
名称:kotlin.String,
标题:kotlin.String,
previewUrl:kotlin.String,
连接:kotlin.collections.List?/*=编译代码*/,,
mapWindows:kotlin.collections.List?/*=编译代码*/,,
ribbons:kotlin.collections.List?/*=编译代码*/
) {
@字段:com.fasterxml.jackson.annotation.JsonProperty public final val connections:kotlin.collections.List?/*编译代码*/
@字段:com.fasterxml.jackson.annotation.JsonProperty public final val mapWindows:kotlin.collections.List?/*编译代码*/
@字段:com.fasterxml.jackson.annotation.JsonProperty public final val name:kotlin.String/*编译代码*/
@字段:com.fasterxml.jackson.annotation.JsonProperty public final val previewUrl:kotlin.String/*编译代码*/
@字段:com.fasterxml.jackson.annotation.JsonProperty public final val ribbons:kotlin.collections.List?/*编译代码*/
@字段:com.fasterxml.jackson.annotation.JsonProperty public final val title:kotlin.String/*编译代码*/
}
如你所见,这门课看起来不错

然后我有一个包含以下功能的服务:

public final fun getProjects(): 
    kotlin.collections.List<bla.bla.bla.Project> {
        /* compiled code */
    }
public final fun getProjects():
kotlin.collections.List{
/*编译代码*/
}
那么,在执行这个类时,我期望得到什么呢?当它返回一个项目列表时,我还希望得到一个项目列表。但我得到的却是LinkedHashMaps的列表

我一处理这些列表,应用程序就会出现异常。无法将这些LinkedHashMaps强制转换到Project。一旦我得到这份名单,它就意味着“游戏结束”

事实上,我现在不知道该做什么。在创建api客户机时,我也尝试过使用moshi或gson,但遗憾的是,我们的类嵌套得很深,而这些类不适用


有人经历过类似的事情吗?

嗯,显然这是一个很容易解决的问题。不知为什么,Jackson不喜欢kotlin.collection.List,但它喜欢数组。因此,我在config.json中添加了这一行:

"collectionType": "array"

就这样。现在它返回正确类型的数组。

很显然,这是一个简单的修复方法。不知为什么,Jackson不喜欢kotlin.collection.List,但它喜欢数组。因此,我在config.json中添加了这一行:

"collectionType": "array"

就这样。现在它返回正确类型的数组。

无意中发现了这一点,但使用了Moshi/Kotlin OpenAPI生成器(v5.0.0)。上面的解决方法(仍然)有效。我无意中发现了这一点,但使用了Moshi/Kotlin OpenAPI生成器(v5.0.0)。上面的解决方法(仍然)有效。