java - 无法在 Open API 3 中将类型“java.lang.String”的属性值转换为所需类型
问题描述
我有一个带有这种方法的@RestController
@RestController
public MyController {
@Operation(summary = "Some text", description = "Some text again"
@GetMapping("/route")
public MyClassResponse getSomething(
@Parameter(name = "My request", description = "My request") MyRequest request
) {
// to do smth
return response
}
MyRequest 在哪里
public class MyRequest {
private int param1;
private String param2;
private MyClass param3;
}
MyClass 看起来像
public class MyClass {
private int clazzParam1;
private int clazzParam2;
}
首先,Swagger 像 body 一样显示参数 MyRequest
{
"param1" : 0;
"param2" : "string",
"param3" : {
"clazzParam1" : 0,
"clazzParam2" : 0
}
}
但我想看到这样的每个参数
其次,当我尝试提出请求时,我得到了这个 curl
http://localhost:8080/route?param1=0¶m2=string¶m3=clazzParam1,0,clazzParam2,0
反而
http://localhost:8080/route?param1=0¶m2=string¶m3.clazzParam1=0¶m3.clazzParam2=0
因此响应包含下一个失败无法将类型“java.lang.String”的属性值转换为属性“param3”所需的类型“MyClass”。
我应该如何使用注释来获得我想要的东西?由于各种原因,我不能使用 .yaml 描述。谢谢你。
解决方案
@ParameterObject 是答案。它将对象解包到 Swagger UI 中的参数
推荐阅读
- javascript - 无法获取对象而不是数组
- terraform - Terraform 提供者 - 您将如何表示没有明确定义的 CRUD 操作的资源?
- java - 如何在 kubernetes 环境中使用 spark 配置 beam python sdk
- vb.net - 当被要求时,Visual Basic 表单不会处理所有项目
- bash - Anaconda 是否检查 bashrc 文件以获取 CC?小路?
- flutter - 颤振 sqflite DatabaseException 没有这样的表
- java - 是否可以在 Android 中为某些应用程序添加“请勿打扰”的例外情况?
- linux - 查找包含在与通配符匹配的目录中的叶目录
- python - 如何通过测试验证具有所有参数的 json?Python
- google-cloud-platform - 无法通过云 shell 终端 ssh [谷歌云平台]