我正在为 Kotlin 多平台 ktor 客户端编写 Spring Boot 后端。在大多数情况下,这种方法效果很好,但我在序列化和反序列化布尔值方面遇到了一个问题。这是我在服务器端的端点:
@GetMapping("/api/v1/user/existsByUsername/{username}", produces = [MediaType.APPLICATION_JSON_VALUE])
@ResponseBody
fun userExistsByUsername(@PathVariable("username") username: String) : ResponseEntity<Boolean> {
val exists = userService.usernameExists(username)
return ResponseEntity.status(HttpStatus.OK).body(exists)
}
我期望从此端点获得结果,{true}
但客户端收到了主体true
- 并且无法反序列化它。我可以用简单的方式强制端点添加花括号吗?或者有没有办法告诉 ktor 将基本类型反序列化为非 JSON?
在 Spring Boot 中,原始类型(如布尔值或整数)直接序列化为响应主体中的纯值,而无需包装在对象中(因此您获得
true
和false
)。在你的 kotlin 代码中创建一个类
那么,亲爱的 @padmalcom,你可以写类似
使用你的课程。
因此您的 JSON 返回(休息端点)将是:
带有花括号。
然后是 Ktor 端:
快速且简单