经常有这么一个需求,实体类里面用到枚举常量,但序列化成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. Y分形的平面微带天线生成过程

    Y分形的平面微带天线生成过程 本文介绍了使用Altium Designer脚本程序生成Y型天线的过程,在窗体中线宽.迭代次数,边框长度可以直接设置. Y分形天线用户界面由一个窗体.1个TImage控件 ...

  2. 抓包工具fiddler安装和配置

    常见的抓包工具:fiddler.wireshark,本文以安装fiddler为例: 在官网上https://www.telerik.com/fiddler下载,安装后打开fiddler. 选择好自己的 ...

  3. C++线性表的链式存储结构

    C++实现线性表的链式存储结构: 为了解决顺序存储不足:用线性表另外一种结构-链式存储.在顺序存储结构(数组描述)中,元素的地址是由数学公式决定的,而在链式储存结构中,元素的地址是随机分布的,每个元素 ...

  4. 《深入理解 Java 虚拟机》读书笔记:垃圾收集器与内存分配策略

    正文 垃圾收集器关注的是 Java 堆和方法区,因为这部分内存的分配和回收是动态的.只有在程序处于运行期间时才能知道会创建哪些对象,也才能知道需要多少内存. 虚拟机栈和本地方法栈则不需要过多考虑回收的 ...

  5. [原创] 在C++中实现打字机效果

    如题. void pout(string str,int t)//随便取的,不要介意,str是待输出字符串,t是每两个字的间隔时间. { ;i<str.length();i++) { cout& ...

  6. 从CentOS 7.0升级到7.7版本

    我平时都在VirtualBox上装虚拟机,方法是导入ova镜像文件,比如导入从网上下载的CentOS7-base.ova,该ova为CentOS 7.0版本,而现在最新版本为7.7,为此进入系统后第一 ...

  7. [总结]最小生成树之Kruskal算法

    目录 一.最小生成树的相关知识 1. 树的性质 2. 生成树 3. 最小生成树 4. 最小生成树的性质 二.Kruskal算法求最小生成树 1. 核心思想 2. 具体流程 3. 图示 4. 代码实施 ...

  8. day28作业

    import os import uuid import pickle from conf import settings class School: def __init__(self,name,a ...

  9. 浏览器中 JS 的事件循环机制

    目录 事件循环机制 宏任务与微任务 实例分析 参考 1.事件循环机制 浏览器执行JS代码大致可以分为三个步骤,而这三个步骤的往复构成了JS的事件循环机制(如图). 第一步:主线程(JS引擎线程)中执行 ...

  10. 如何防止CDN防护被绕过

    当攻击者发现目标站点存在CDN防护的时候,会尝试通过查找站点的真实IP,从而绕过CDN防护.我们来看一个比较常见的基于公有云的高可用架构,如下:CDN(入口层)->WAF(应用层防护)-> ...