我尝试使用Swagger Play2 Module为Play应用程序生成api文档。我们使用了许多值类来获得一些额外的类型安全性和代码可读性。
其中一个操作为案例类生成JSON,如下所示:
case class MyResponse(prop1: MyValueType, prop2: MyValueType)
其中MyValueType
是这样的值类:
case class MyValueType(value: String)
格式化为JSON,就像使用自定义Format[T]
的字符串一样。
Swagger UI生成示例JSON代码,如下所示:
{
"prop1": {
"value": "string"
},
"prop2": {
"value": "string"
}
}
虽然我希望它能够产生这个:
{
"prop1": "string",
"prop2": "string"
}
我尝试过这样的自定义注释,但这似乎不起作用:
case class MyResponse(
@ApiModelProperty(dataType="string") prop1: MyValueType,
@ApiModelProperty(dataType="string") prop2: MyValueType,
)
有关如何完成此任务的任何提示?
答案 0 :(得分:1)
尝试使用大写
的dataType =“String”答案 1 :(得分:0)
Swagger将case class MyValueType
包裹在case class MyResponse
。
它忽略了您的dataType
注释,仍在解析MyValueType
您是否尝试使用更完整的属性注释?类似的东西:
case class MyResponse(@ApiModelProperty(
value = "Property 1",
dataType="string") prop1: MyValueType,
@ApiModelProperty(
value = "Property 2",
dataType="string") prop2: MyValueType)
顺便说一下,Swagger中的数据类型不区分大小写,因此string
等同于String
。
答案 2 :(得分:0)
我尝试过 @ApiModelProperty(dataType = "String")
和 @ApiModelProperty(dataType = "string")
,但它们都不起作用。
@ApiModelProperty(dataType = "java.lang.String")
对我有用。
我的 springfox 版本:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>