开发者社区> 问答> 正文

fastjson2.0.23版本枚举值序列化不正确,该怎么办

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")));

}

提问15.png

原提问者GitHub用户gg159753

展开
收起
白夜行fighting 2023-04-21 10:53:22 495 0
1 条回答
写回答
取消 提交回答
  • 要输出Enum.name,使用JSONWriter.Feature.WriteEnumsUsingName),如下:

    JSON.toJSONString(TestUser.TestUserTypeEnum.MERCHANT, JSONWriter.Feature.WriteEnumsUsingName)

    原回答者GitHub用户wenshao

    2023-04-21 13:55:27
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载