json序列化字符串后,配置枚举类型显示数值而不是名称
经常有这么一个需求,实体类里面用到枚举常量,但序列化成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序列化字符串后,配置枚举类型显示数值而不是名称的更多相关文章
- Newtonsoft.Json序列化字符串-格式化
转自:https://blog.csdn.net/wlphlj/article/details/51982866最近C#中需要将实体进行json序列化,使用了Newtonsoft.Json publi ...
- json序列化时定制支持datetime类型,和到中文让他保留中文形式
json序列化时,可以处理的数据类型有哪些?如何定制支持datetime类型 自定义时间序列化转换器 import json from json import JSONEncoder from dat ...
- Newtonsoft.Json序列化字符串-格式化和时间格式问题
最近C#中需要将实体进行json序列化,使用了Newtonsoft.Json public static void TestJson() { DataTable d ...
- c#中枚举类型 显示中文
public enum AuditEnum { [Description("未送审")] Holding=0, [Description("审核中")] Aud ...
- Delphi10.3的DBGrid中memo类型显示内容而不是(WIDEMEMO)
1]连接好数据库,并显示: 2]增加所有字段: 3]添加事件: // FDQuery1UserName: TWideMemoField; procedure TForm1.FDQuery1Use ...
- Python—使用Json序列化Datetime类型
import json from datetime import datetime, date """ str,int,list,tuple,dict,bool,None ...
- ASP.NET MVC4 json序列化器
ASP.NET MVC4中调用WEB API的四个方法 2012年06月07日00:05 it168网站原创 作者:廖煜嵘 编辑:景保玉 我要评论(0) [IT168技术]当今的软件开发中,设计软件的 ...
- 重温CLR(十一) 枚举类型、位标志和数组
枚举类型 枚举类型(enumerated types)定义了一组"符号名称/值"配对.例如,以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum ...
- C#之枚举类型
参考: http://www.cnblogs.com/an-wl/archive/2011/04/14/2015815.html 惯例先上MSDN: https://msdn.microsoft.co ...
随机推荐
- Vue学习(1)---Vue介绍
Vue是什么 官方定义:Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层 ...
- Kylin 新定位:分析型数据仓库
亲爱的各位社区朋友: Apache Kylin 在 2014 年 10 月开源并加入 Apache 软件基金会的孵化器,一年后从孵化器毕业成为 Apache 顶级项目.从第一天起,Kylin 的标语是 ...
- 下载腾讯视频mp4格式
import time import subprocess import argparse def command(cmd, timeout=60): ''' :param cmd: 执行命令cmd, ...
- java web知识点复习,重新编写学生选课系统的先关操作。
为了复习之前学习的相关的html,javaweb等知识.自己有重新编写了一遍学生选课系统. 下面主要展示登录界面的代码,以及各个大的主页面的相关jsp. <%@ page language=&q ...
- Codeup 25593 Problem G 例题5-7 求圆周率pi的近似值
题目描述 用如下公式 4*Π = 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13 - 1/15 - 求圆周率PI的近似值,直到发现某一项的绝对值小于10-6为止(该项不 ...
- ClassLoader类加载器浅见
类加载器 类加载器,它拿到.class文件,它会把他拆成两部分,将static数据转换成方法区的数据结构,然后把他放在了方法区之中. 然后在堆里面建一个类对象(Class,它可以用来实例化对象),然后 ...
- Java成长第四集--文本处理IO流
Java IO流在实际业务中使用的频率还是蛮高的,一些业务场景比如,文件的上传和导出,文件的读取等基本都是通过操作IO流来实现的,所以IO流是我们现在学习过程中必须要掌握的技能之一,熟练的使用IO流, ...
- 从3dMax导出供threeJS使用的带动作模型与加载
评论区发现的建议,最近没空测试,先贴这 还有好多人说找不到插件的 https://pan.baidu.com/s/1Q5g0... 密码:b43e . 应该是他们现在只是维护blender,只有这个的 ...
- Jmeter命令行执行并生成HTML报告
前提:准备好jmeter脚本,找到jmeter配置文件查看生成的日志格式是否为csv,如果不是请改为csv 注意:使用命令执行jmeter脚本必须使用jmeter 3.0及以上版本1.使用命令行执行脚 ...
- Jingwen‘s update
Bugs: The checkin button of the question answering page must be pressed twice to check in the result ...
