spring Jackson 配置笔记
配置代码
// 设置输出时包含属性的风格
this.findAndRegisterModules();
this.setSerializationInclusion(JsonInclude.Include.NON_NULL)
// 允许单引号、允许不带引号的字段名称
this.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true)
this.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true)
this.configure(MapperFeature.USE_STD_BEAN_NAMING, true)
this.setVisibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.NONE);
this.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE);
this.setVisibility(PropertyAccessor.IS_GETTER, JsonAutoDetect.Visibility.NONE);
this.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
this.setDateFormat(SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
// 设置输入时忽略在JSON字符串中存在但Java对象实际没有的属性
this.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
// 空值处理为空串
this.serializerProvider.setNullValueSerializer(object : JsonSerializer<Any>() {
@Throws(IOException::class, JsonProcessingException::class)
override fun serialize(value: Any, jgen: JsonGenerator,
provider: SerializerProvider) {
jgen.writeString("")
}
})
// 设置时区
this.setTimeZone(TimeZone.getDefault())//getTimeZone("GMT+8:00")
config 常用配置枚举
SerializationFeature
- WRITE_DATES_AS_TIMESTAMPS
- WRITE_DATE_KEYS_AS_TIMESTAMPS
- WRITE_DATES_WITH_ZONE_ID
- WRITE_DURATIONS_AS_TIMESTAMPS
- WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS
- WRITE_ENUMS_USING_TO_STRING
- WRITE_ENUMS_USING_INDEX
- WRITE_NULL_MAP_VALUES
- WRITE_EMPTY_JSON_ARRAYS
- WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED
- WRITE_BIGDECIMAL_AS_PLAIN
- WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS
MapperFeature
- USE_STATIC_TYPING
- USE_STD_BEAN_NAMING
DeserializationFeature
- USE_BIG_DECIMAL_FOR_FLOATS
- USE_BIG_INTEGER_FOR_INTS
- USE_LONG_FOR_INTS
- ACCEPT_SINGLE_VALUE_AS_ARRAY
- UNWRAP_SINGLE_VALUE_ARRAYS
- ACCEPT_EMPTY_STRING_AS_NULL_OBJECT
- ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT
- ACCEPT_FLOAT_AS_INT
- READ_ENUMS_USING_TO_STRING
- READ_UNKNOWN_ENUM_VALUES_AS_NULL
- READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE
- READ_DATE_TIMESTAMPS_AS_NANOSECONDS
- ADJUST_DATES_TO_CONTEXT_TIME_ZONE
常用配置解释
setVisibility 可以设置Key的方式
MapperFeature.USE_STD_BEAN_NAMING 直接输出原始的字段名。
/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.9.5/jackson-databind-2.9.5-sources.jar!/com/fasterxml/jackson/databind/util/BeanUtil.java
/**
* @since 2.5
*/
public static String okNameForMutator(AnnotatedMethod am, String prefix,
boolean stdNaming) {
String name = am.getName();
if (name.startsWith(prefix)) {
return stdNaming
? stdManglePropertyName(name, prefix.length())
: legacyManglePropertyName(name, prefix.length());
}
return null;
}
stdManglePropertyName 就是原始输出。
legacyManglePropertyName 就是规范输出。
spring Jackson 配置笔记的更多相关文章
- Spring MVC-学习笔记(3)参数绑定注解、HttpMessageConverter<T>信息转换、jackson、fastjson、XML
1.参数绑定注解 1>@RequestParam: 用于将指定的请求参数赋值给方法中的指定参数.支持的属性: 2>@PathVariable:可以方便的获得URL中的动态参数,只支持一个属 ...
- springboot 2.0 配置 spring.jackson.date-format 不生效
展开 问题:application.properties中的如下配置不生效,返回时间戳 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss 原因分析: 拦截器 ...
- Spring Boot学习笔记-配置devtools实现热部署
写在前面 Spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. de ...
- spring boot 学习笔记(三)之 配置
一:概述 在Spring boot 中根据业务需求,我们往往会在不同地方配置我们所需的key-value 配置项,配置文件存在不同的地方的场景如下: (1) 默认存在 application.prop ...
- Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用[z]
前言 早在去年就简单的使用了一下Spring Boot,当时就被其便捷的功能所震惊.但是那是也没有深入的研究,随着其在业界被应用的越来越广泛,因此决定好好地深入学习一下,将自己的学习心得在此记录,本文 ...
- Spring Boot 学习笔记1---初体验之3分钟启动你的Web应用
前言 早在去年就简单的使用了一下Spring Boot,当时就被其便捷的功能所震惊.但是那是也没有深入的研究,随着其在业界被应用的越来越广泛,因此决定好好地深入学习一下,将自己的学习心得在此记录,本文 ...
- Spring MVC 学习笔记(整理)
SpringMVC学习 1.概述 Spring MVC是一种基于Java实现MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行解耦,基于请求-响应模型帮助我们 ...
- 【转】Spring.NET学习笔记——目录
目录 前言 Spring.NET学习笔记——前言 第一阶段:控制反转与依赖注入IoC&DI Spring.NET学习笔记1——控制反转(基础篇) Level 200 Spring.NET学习笔 ...
- Spring MVC 学习笔记一 HelloWorld
Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...
随机推荐
- 杭电ACM2008--数值统计
数值统计 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- C#數據庫
一.連接數據庫 1.定義連接數據庫的字符串 string source = "server=(local); integrated security=SSPI; database=test& ...
- C# 提取PPT文本和图片的实现方案
在图文混排的文档中,我们可以根据需要将文档中的文字信息或者图片提取出来,通过C#代码可以提取Word和PDF文件中的文本和图片,那么同样的,我们也可以提取PPT幻灯片当中的文本和图片.本篇文档将讲述如 ...
- 集成Android人脸识别demo分享
本应用来源于虹软人工智能开放平台,人脸识别技术工程如何使用? 1.下载代码 git clone https://github.com/andyxm/ArcFaceDemo.git 2.下载虹软人脸识别 ...
- Java新知识系列 四
[]URL的组成<协议>://<主机>:<端口>/<路径> . []线程的定义实例化和启动. []类的final变量初始化需要满足的条件. []管道通信 ...
- Yapi部署说明
1.环境搭建 确保 node 版本=> 7.6,请运行 node -v 查看版本号 确保 mongodb 版本 => 2.6,请运行 mongo --version 查看版本号 确保安装了 ...
- PJSUA2开发文档--第十一章 网络问题
11 网络问题 11.1 IP地址更改 请参阅wiki 处理IP地址更改.请注意,本指南使用PJSUA API作为参考. 11.2 被阻止/过滤的网络 请参阅维基百科 通过阻止或过滤的VoIP网络
- Windows应急响应常识
Windows 应急响应 常见事件ID 1102 清理审计日志 4624 账号登陆成功 4625 账号登陆失败 4672 授予特殊权限 4720 创建用户 4726 删除用户 4728 将成员添加到启 ...
- Python高级应用(3)—— 为你的项目添加验证码
验证码简介 验证码的作用: 验证码在现在来说,是很常见的东西,可以一定程度的保护网站,比如防止网络爬虫恶意爬取网站数据啊,减少低级的攻击啊什么的.但是高级点的骚操作还是不太好防范,所以现在的验证码平台 ...
- 【转载】IIC SPI UART串行总线
一.SPISPI(Serial Peripheral Interface,串行外设接口)是Motorola公司提出的一种同步串行数据传输标准,在很多器件中被广泛应用. 接口SPI接口经常被称为4线串行 ...