首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >@JsonValue如何用Lombok getter用于Swagger值?

@JsonValue如何用Lombok getter用于Swagger值?
EN

Stack Overflow用户
提问于 2022-01-18 06:26:13
回答 1查看 646关注 0票数 0

给定一个Spring项目,该项目使用斯普林多-奥帕库公开一个OpenAPI (Swagger)端点,记录该项目的Spring控制器端点。

该项目中的一个枚举在字段中使用来自@JsonValue杰克逊来更改枚举的JSON表示形式。使用来自@GetterLombok项目注释将此枚举字段公开为getter。

代码语言:javascript
运行
复制
@Getter
public enum Suit {
    HEARTS("Hearts"), DIAMONDS("Diamonds"), CLUBS("Clubs"), SPADES("Spades");

    @JsonValue
    private final String name;

    Suit(String name) { this.name = name; }
}

然而,尽管Jackson表示是基于字段的,但OpenAPI端点返回的枚举表示使用enumtoString值:

代码语言:javascript
运行
复制
"suit": {
  "type": "string",
  "enum": [
    "HEARTS",
    "DIAMONDS",
    "CLUBS",
    "SPADES"
  ]
}

预期:

代码语言:javascript
运行
复制
"suit": {
  "type": "string",
  "enum": [
    "Hearts",
    "Diamonds",
    "Clubs",
    "Spades"
  ]
}

基于springdoc#1244装腔作势#3998,显然需要将@JsonValue注释应用于方法,而不是字段。然而,无论是上述尝试的做法,还是以下做法,都不起作用:

代码语言:javascript
运行
复制
@Getter @JsonValue
public enum Suit {
    HEARTS("Hearts"), DIAMONDS("Diamonds"), CLUBS("Clubs"), SPADES("Spades");

    private final String name;

    Suit(String name) { this.name = name; }
}

如何在使用Lombok生成getter的同时,使用Swagger中的适当值来暴露这个枚举?

EN

回答 1

Stack Overflow用户

发布于 2022-01-18 06:26:13

解决方案是告诉Lombok在生成的getter方法上使用注释,在字段上使用@Getter(onMethod_ = @JsonValue)

代码语言:javascript
运行
复制
public enum Suit {
    HEARTS("Hearts"), DIAMONDS("Diamonds"), CLUBS("Clubs"), SPADES("Spades");

    @Getter(onMethod_ = @JsonValue)
    private final String name;

    Suit(String name) { this.name = name; }
}

onMethod属性记录在@Getter和@SetteronX文档中:

要在生成的方法上添加注释,可以使用onMethod=@__({@AnnotationsHere})。…有关更多细节,请参见关于onX特性的文档。语法有点奇怪,取决于您正在使用的javac。 在javac7上,要使用3种onX特性中的任何一种,必须包装要应用于@__(@AnnotationGoesHere)中的构造函数/方法/参数的注释。若要应用多个注释,请使用@__({@Annotation1, @Annotation2})。注释本身显然也有参数。 在javac8和up上,在onMethodonParamonConstructor之后添加下划线。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70751146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档