2.0.23版本枚举值序列化不正确
问题描述
用toJSONString方法打印出来对象里的枚举值为0 用1.x版本打印正常
环境信息
OS信息: mac /服务器均复现 JDK信息:Openjdk 1.8.0_312 版本信息:Fastjson2 2.23
重现步骤
`import lombok.AllArgsConstructor; import lombok.Data; import lombok.Getter;
import java.io.Serializable;
/**
@Date 2022/9/28 09:32 */ @DaTa @AllArgsConstructor public class TestUser implements Serializable { String usrUni; TestUserTypeEnum usrType;
String name;
String phone;
public static TestUser system = of(TestUserTypeEnum.SYSTEM, "0");
public static TestUser of(TestUserTypeEnum type, String uni) { return new TestUser(uni, type, null, null); }
@AllArgsConstructor @getter public static enum TestUserTypeEnum implements Serializable { MERCHANT("MERCHANT", "商户"), MEMBER("MEMBER", "会员"), SYSTEM("SYSTEM", "系统"),
; String key; String desc;
} }`
` public static void main(String[] args) { TestUser w = TestUser.of(TestUser.TestUserTypeEnum.MERCHANT, "1234"); System.out.println(com.alibaba.fastjson2.JSONObject.toJSONString(WorkflowUser.of(WorkflowUserTypeEnum.MERCHANT, "1234"))); System.out.println(com.alibaba.fastjson.JSONObject.toJSONString(WorkflowUser.of(WorkflowUserTypeEnum.MERCHANT, "1234")));
}
原提问者GitHub用户gg159753
要输出Enum.name,使用JSONWriter.Feature.WriteEnumsUsingName),如下:
JSON.toJSONString(TestUser.TestUserTypeEnum.MERCHANT, JSONWriter.Feature.WriteEnumsUsingName)
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。