Quarkus中Kotlin REST端点无法返回JSON格式问题排查
问题原因及解决方案
核心原因
你遇到的问题是因为缺少Jackson对Kotlin的序列化支持依赖。Quarkus默认使用Jackson处理JSON序列化,但Kotlin的data class需要专门的Jackson模块来识别并正确序列化,否则框架会 fallback 调用对象的toString()方法,就出现了你看到的CatFact(fact=This is a cat, length=2)格式。
解决方案
根据你使用的RESTEasy类型(Reactive或传统),添加对应的Kotlin Jackson依赖:
如果你用的是RESTEasy Reactive
在你的pom.xml(Maven)中添加:
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-resteasy-reactive-jackson-kotlin</artifactId> </dependency>
或者build.gradle.kts(Gradle):
implementation("io.quarkus:quarkus-resteasy-reactive-jackson-kotlin")
如果你用的是传统RESTEasy(非Reactive)
添加以下依赖:
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-resteasy-jackson-kotlin</artifactId> </dependency>
或者Gradle:
implementation("io.quarkus:quarkus-resteasy-jackson-kotlin")
额外验证
- 你的
CatFact类上的@JsonProperty注解可以保留(也可以去掉,Kotlin的data class属性名默认会被Jackson识别,除非你需要自定义JSON字段名)。 - 重新构建并运行Quarkus应用,访问
/kotlin/catfact接口,就能得到正确的JSON响应:
{"fact": "This is a cat", "length": 2}
内容的提问来源于stack exchange,提问作者Niklas
相关产品推荐
相关产品推荐

