摇摇欲坠的架构未显示枚举的自定义值

时间:2020-08-10 17:29:10

标签: java enums jackson 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;
  }
}

我以这种方式创建枚举,因为用户将给我输入dogcat。枚举值已正确序列化和反序列化。

但是swagger.json显示DOGCAT代替dogcat。我不希望用户看到内部枚举名称,并且由于该模式将由用户使用,因此我想在模式中显示dogcat

        "type" : {
          "type" : "string",
          "enum" : [ "DOG", "CAT"]
        },

我尝试使用@JsonProperty注释(例如@JsonProperty("dog")),但这并不能解决问题。您能指导我如何解决这个问题吗?

版本: 挥舞:2.0 杰克逊:2.7.9

2 个答案:

答案 0 :(得分:1)

使用

测试代码
Private Sub Ford_Inventory_Variance_File_CleanUp()
  Dim sh As Worksheet, lastRow As Long, i As Long, rngDel As Range, boolToDelete As Boolean
  
  Set sh = ActiveSheet 'use here your sheet
  lastRow = sh.Range("A" & Rows.count).End(xlUp).Row
  For i = 20 To lastRow
    If sh.Range("A" & i).Value = "" Then
        boolToDelete = True
    ElseIf InStr(sh.Range("A" & i).Value, "/") = 0 And InStr(sh.Range("A" & i).Value, "Total of Inventory") = 0 Then
        boolToDelete = True
    ElseIf Not IsNumeric(left(sh.Range("A" & i).Value, 1)) And InStr(sh.Range("A" & i).Value, "Total of Inventory") = 0 Then
        boolToDelete = True
    End If
    If boolToDelete Then
        If rngDel Is Nothing Then 'for first time (when rngDel is nothing)
            Set rngDel = sh.Range("A" & i)
        Else 'next times a union of existing rngDel and the processed cell is created
            Set rngDel = Union(rngDel, sh.Range("A" & i))
        End If
    End If
    boolToDelete = False 'reinitialize the boolean variable
  Next i
  If Not rngDel Is Nothing Then rngDel.EntireRow.Delete xlUp 'rng deletion at once
End Sub

答案 1 :(得分:0)

我尝试了各种替代方法来使其工作,例如

public enum AnimalType {
  @JsonProperty("dog") DOG("dog"),
  @JsonProperty("cat") CAT("cat"),

或使用@ {sercheo_87建议的@JsonCreator。但是该架构未显示所需的值。

我发现这是swagger-core中的错误。接受swagger的更新版本对我有帮助。另外,他们正在向后移植对此版本的更改。