【问题标题】:How do i set a null value on public enum in Java Spring? [closed]如何在 Java Spring 中的公共枚举上设置空值? [关闭]
【发布时间】:2022-01-17 15:03:02
【问题描述】:

我的公共枚举是:

public enum IntervalIncrFreq {
        
        @JsonProperty("1")
        ONE,

        @JsonProperty("2")
        TWO,

        @JsonProperty("4")
        FOUR,

        @JsonProperty("6")
        SIX,

        @JsonProperty("8")
        EIGHT,

        @JsonProperty("12")
        TWELVE
    }

我想添加一个空字段,尝试这个我遇到了错误:

    @JsonProperty("")
    EMPTY,

我应该如何将 JsonProperty 声明为空?

【问题讨论】:

  • 枚举的EMPTY 值有什么用?为什么不直接使用IntervalIncrFreq empty = null?这是否意味着成为(反)序列化的默认值?
  • 您希望它与空字符串“”、空值或不存在的属性字段一起使用吗?还是全部?
  • 我想要一个空字符串,例如 -> ""

标签: java spring-boot enums


【解决方案1】:

写作@JsonProperty("abc")@JsonProperty(value = "abc") 的别名。根据Jackson's (2.6) documentation for the value field

如果值为空字符串(这是默认值),将尝试使用被注释的字段的名称

Jackson 会将空 String 参数解释为您希望 JSON 值使用字段的默认名称,并将其更改为默认名称。这是一个例子。

enum Temp {
    
    @JsonProperty("Apple")
    A,
    
    @JsonProperty("")
    B;

}

class Example
{

    Temp a = Temp.A;
    Temp b = Temp.B;

}

/** That would give you JSON like this */

{

    "a":"Apple"
    "b":"B"

}

我认为你可以完成你想做的最好的方法就是做这样的事情。

@JsonProperty(" ")

【讨论】:

    猜你喜欢
    • 2013-09-08
    • 1970-01-01
    • 2010-11-09
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    相关资源
    最近更新 更多