为啥没有为 java 枚举正确生成 Json?

Posted

技术标签:

【中文标题】为啥没有为 java 枚举正确生成 Json?【英文标题】: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;
    

【问题讨论】:

Serializing enums with Jackson 的可能重复项 【参考方案1】:

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

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

【讨论】:

@BrainT 这种做法越来越频繁,因为枚举现在被积极用于实现Singleton 模式。这也适用于单实例有状态处理程序(这里可能就是这种情况)。 有趣,我没有考虑过。尽管如此,为了帮助团队成员把事情做好,我认为这些二传手是例外而不是规则。特殊的 javadoc 不会出错。

以上是关于为啥没有为 java 枚举正确生成 Json?的主要内容,如果未能解决你的问题,请参考以下文章

java中 调用native方法,生成头文件时,为啥不正确?

有没有一种正确的方法可以使用 JOOQ 为所有方言创建一个包含枚举的表?

Swagger Gradle 插件在构建期间没有为 spring mvc 正确生成 openapi.json 文件

spring-configuration-metadata.json 没有为多模块项目正确生成

jsonschema2pojo-maven-plugin 未正确生成枚举

ghostPCL:为啥这个文件没有正确转换为 PDF?