【问题标题】:Why Json does not get generated properly for java enum?为什么没有为 java 枚举正确生成 Json?
【发布时间】:2013-10-19 10:53:06
【问题描述】:

我有一个 StepEnum,我想像这样生成 json:

{"success":true,"stepList":[{"name":"My First Step","index":0,"status":"active"},{"name":"My Second Step","index":1,"status":"inactive"}]}

但是我得到这样的输出:

 {"success":true,"stepList":["MY_FIRST_STEP","MY_SECOND_STEP"]}

我需要在我的 Enum 类中进行哪些更改。 Json 是由 spring 框架生成的。 这是我的 StepEnum 类:

public enum StepEnum {
    MY_FIRST_STEP("My First Step",0),
    MY_SECOND_STEP("My Second Step",1);

    private String label;
    private int index;
    private String status;
    private StepEnum(String label, int index) {
        this.label = label;this.index = index;
    }
    public void setIndex(int index) {
        this.index = index;
    }
    public int getIndex() {
        return index;
    }
    public void setLabel(String label) {
        this.label = label;
    }
    public String getLabel() {
        return label;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
}

【问题讨论】:

标签: java json spring-mvc enums


【解决方案1】:

这篇文章似乎解决了这个问题和答案: http://www.baeldung.com/jackson-serialize-enums

顺便说一句,我发现枚举属性的设置器非常可疑。枚举是静态的、共享的等等......在我看来,它们需要一个非常不寻常的情况才能成为不可变的。

【讨论】:

  • @BrainT 这种做法越来越频繁,因为枚举现在被积极用于实现Singleton 模式。这也适用于单实例有状态处理程序(这里可能就是这种情况)。
  • 有趣,我没有考虑过。尽管如此,为了帮助团队成员把事情做好,我认为这些二传手是例外而不是规则。特殊的 javadoc 不会出错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
  • 1970-01-01
  • 2013-03-07
  • 2010-12-08
相关资源
最近更新 更多