经常有这么一个需求,实体类里面用到枚举常量,但序列化成json字符串时。默认并不是我想要的值,而是名称,如下

@Data
public class TestBean {
private TestConst testConst; }

枚举

@AllArgsConstructor
public enum TestConst {
AFFIRM_STOCK(12), CONFIRM_ORDER(13),; @Setter
@Getter
private int status; }

默认结果:{"testConst":"CONFIRM_ORDER"}

期望结果:{"testConst":13}

3种方法:

1.使用jackson,这种最简单了

2.若使用FastJson,枚举类继承JSONSerializable

3.这种方法在实体类指定指定编解ma器。(只有第三种方法同时支持序列化和反序列化)

jackson方法

//在枚举的get方法上加上该注解
@JsonValue
public Integer getStatus() {
return status;
}
        TestBean form = new TestBean();
form.setTestConst(TestConst.CONFIRM_ORDER); ObjectMapper mapper = new ObjectMapper(); String mapJakcson = null;
try {
mapJakcson = mapper.writeValueAsString(form);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
System.out.println(mapJakcson);
//{"testConst":13}

fastjson 方法1:枚举继承JSONSerializable

@AllArgsConstructor
public enum TestConst implements JSONSerializable {
AFFIRM_STOCK(12) {
@Override
public void write(JSONSerializer jsonSerializer, Object o, Type type, int i) throws IOException {
jsonSerializer.write(this.getStatus());
}
}, CONFIRM_ORDER(13) {
@Override
public void write(JSONSerializer jsonSerializer, Object o, Type type, int i) throws IOException {
jsonSerializer.write(this.getStatus());
}
},; @Setter
@Getter
private int status; }

fastjson方法2:https://www.cnblogs.com/insaneXs/p/9515803.html

转载于:https://my.oschina.net/yejunxi/blog/2209485

json序列化字符串后,配置枚举类型显示数值而不是名称的更多相关文章

  1. Newtonsoft.Json序列化字符串-格式化

    转自:https://blog.csdn.net/wlphlj/article/details/51982866最近C#中需要将实体进行json序列化,使用了Newtonsoft.Json publi ...

  2. json序列化时定制支持datetime类型,和到中文让他保留中文形式

    json序列化时,可以处理的数据类型有哪些?如何定制支持datetime类型 自定义时间序列化转换器 import json from json import JSONEncoder from dat ...

  3. Newtonsoft.Json序列化字符串-格式化和时间格式问题

    最近C#中需要将实体进行json序列化,使用了Newtonsoft.Json public static void TestJson()        {            DataTable d ...

  4. c#中枚举类型 显示中文

    public enum AuditEnum { [Description("未送审")] Holding=0, [Description("审核中")] Aud ...

  5. Delphi10.3的DBGrid中memo类型显示内容而不是(WIDEMEMO)

    1]连接好数据库,并显示: 2]增加所有字段: 3]添加事件: //    FDQuery1UserName: TWideMemoField; procedure TForm1.FDQuery1Use ...

  6. Python—使用Json序列化Datetime类型

    import json from datetime import datetime, date """ str,int,list,tuple,dict,bool,None ...

  7. ASP.NET MVC4 json序列化器

    ASP.NET MVC4中调用WEB API的四个方法 2012年06月07日00:05 it168网站原创 作者:廖煜嵘 编辑:景保玉 我要评论(0) [IT168技术]当今的软件开发中,设计软件的 ...

  8. 重温CLR(十一) 枚举类型、位标志和数组

    枚举类型 枚举类型(enumerated types)定义了一组"符号名称/值"配对.例如,以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum ...

  9. C#之枚举类型

    参考: http://www.cnblogs.com/an-wl/archive/2011/04/14/2015815.html 惯例先上MSDN: https://msdn.microsoft.co ...

随机推荐

  1. Jenkins中管道案例脚本(生命式语法)

    pipeline { agent any parameters { choice( choices: 'feature\nmaster\npercent10', description: '选择要发布 ...

  2. ELK数据批量导入

                                                                            数据批量导入 • 使用 _bulk 批量导入数据 – 批 ...

  3. Spring(三):bean的自动装配

    Bean的自动装配 自动装配是Spring满足bean依赖的一种方式. Spring会在上下文中自动寻找,并自动给bean装配属性 Spring中三种装配方式 在xml中显式的配置. 在java中显式 ...

  4. MySQL学习之路4-数据的导入导出

    数据的导入 通过数据库管理工具,先建表,然后导入表记录. 通过sql语句导入: load data local infile '表路径' into table stuscore fields term ...

  5. centos7安装jmeter + ant

    1.xshell链接上centos7服务器 先安装jmeter 使用wget  jmeter-xxxxxxxxxxxx进行联网自动下载(先进入jmeter官网,然后找到要下载的.tgz压缩包,然后右键 ...

  6. 在linux中使用mailx发送邮件

    [root@ml ~]# yum -y install mailx   #安装 [root@ml ~]# vim /etc/mail.rc 在最后一行添加(我这里使用的是qq邮箱): @qq.com ...

  7. 很用心的为你写了 9 道 MySQL 面试题

    MySQL 一直是本人很薄弱的部分,后面会多输出 MySQL 的文章贡献给大家,毕竟 MySQL 涉及到数据存储.锁.磁盘寻道.分页等操作系统概念,而且互联网对 MySQL 的注重程度是不言而喻的,后 ...

  8. 动态规划_01背包_从Dijikstra和Floyd入手,彻底理解01背包

    dp一直是短板,现在从最基础的地方开始补 给定背包总容量 M ,n个商品选择,分别有价值vi,占量wi,从中取商品放入背包,令.容量和W=Σwi不超过M,令背包中的价值和V=Σvi最大 然后取法有很多 ...

  9. stand up meeting 1/12/2016

    part 组员                工作              工作耗时/h 明日计划 工作耗时/h    UI 冯晓云  UI测试和调整:页面跳转调整    3 查漏补缺,扫除UI b ...

  10. G. 平行线

    单点时限: 2.0 sec 内存限制: 512 MB “大猩猩为什么不喜欢平行线?”“因为平行线没有相交”哈哈哈哈哈哈哈哈哈 为了管理动物园不听话的大猩猩们,动物管理员Boctorio 决定去远方的A ...