如何解决杰克逊从使用openapi-codegen生成的API返回LinkedHashMap
我有一个提供openapi.json规范的Java后端。其目的是可以通过openapi-generator创建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 */
}
如您所见,此类看起来很好。
然后我有一个包含以下功能的服务:
public final fun getProjects():
kotlin.collections.List<bla.bla.bla.Project> {
/* compiled code */
}
那么,执行此类时我期望什么?当它返回项目列表时,我也希望获得项目列表。但是相反,我得到了LinkedHashMaps列表。
一旦我处理了这些列表,应用程序就会出现异常。无法将这些LinkedHashMaps强制转换为Project。一旦获得此列表,就意味着“游戏结束”。
实际上,我不知道现在该怎么办。在创建api客户端时,我也尝试使用moshi或gson,但是可悲的是,我们确实嵌套了很多嵌套类,但无法解决这些问题。
有人经历过类似的事情吗?
解决方法
好吧,显然这很容易解决。杰克逊以某种方式不喜欢kotlin.collection.List,但喜欢数组。所以我将这一行添加到config.json:
"collectionType": "array"
就是这样。现在,它将返回具有正确类型的数组。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。