java - Swagger 架构未显示枚举的自定义值
问题描述
我创建了一个枚举,它也存储一个值
import com.fasterxml.jackson.annotation.JsonValue;
public enum AnimalType {
DOG("dog"),
CAT("cat"),
private final String displayName;
AnimalType(String displayName) {
this.displayName = displayName;
}
@JsonValue
public String getDisplayName() {
return displayName;
}
@Override
public String toString() {
return displayName;
}
}
我以这种方式创建枚举,因为用户会给我输入dog
或cat
. 枚举值正在正确地序列化和反序列化。
但是swagger.json
显示DOG
andCAT
代替dog
and cat
。我不希望用户看到内部枚举名称,并且由于用户将使用架构,我想在架构中显示dog
or cat
。
"type" : {
"type" : "string",
"enum" : [ "DOG", "CAT"]
},
我尝试过使用@JsonProperty
注释(like @JsonProperty("dog")
),但这并没有解决问题。你能指导我如何解决这个问题吗?
版本: 招摇:2.0 杰克逊:2.7.9
解决方案
测试你的代码
@JsonCreator
public static AnimalType fromString(String key) {
return displayName == null
? null
: AnimalType.valueOf(key.toUpperCase());
}
推荐阅读
- node.js - Telegram webhook 有什么用?
- ruby-on-rails - 使用额外的密钥而不是电子邮件/密码对用户进行身份验证是个好主意吗?(API/智威汤逊)
- java - 我将如何表示这个数据库关系?
- python - 在转换期间从 tensorflow 对象中提取 numpy 值
- google-cloud-platform - 使用 Dataproc 在 Zeppelin 上加载插件 GitHubNotebookRepo 和 GCSNotebookRepo 的问题
- html - 最小化页面时,表格中的 html 元素开始离开它所在的卡片
- css - 引导样式未以角度 10 加载
- vuetify.js - 如何配置 v-list-item 宽度以避免省略号
- javascript - 如何使用 javascript 在 Webform 中上传文件以访问全局 PHP 变量 $_FILES
- html - 如何在文本块下方的 2 个图像之间添加空格?