SpringBoot的json序列化及时间序列化处理
使用场景:前台的多种时间格式存入后台,后台返回同时的时间格式到前台。
1 在config目录下配置jscksonConfig.java
- package com.test.domi.config;
- import com.fasterxml.jackson.core.JsonGenerator;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.databind.JsonSerializer;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.SerializerProvider;
- import com.fasterxml.jackson.databind.module.SimpleModule;
- import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Primary;
- import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
- import java.io.IOException;
- import java.math.BigDecimal;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- /**
- * 时间序列化
- */
- public class JacksonConfig {
- @Bean
- @Primary
- @ConditionalOnMissingBean
- public ObjectMapper jacksonOnjectMapper(Jackson2ObjectMapperBuilder builder){
- ObjectMapper objectMapper = builder.createXmlMapper(false).build();
- //将json属性的空值null转化为空字符串""
- objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
- @Override
- public void serialize(Object arg0, JsonGenerator arg1, SerializerProvider arg2) throws IOException, JsonProcessingException {
- arg1.writeString("");
- }
- });
- //json转换日期格式设置
- objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
- SimpleModule simpleModule = new SimpleModule();
- //在进出前后台的时候,设置BigDecimal和字符串之间转换
- simpleModule.addSerializer(BigDecimal.class,ToStringSerializer.instance);
- //设置对前台传入的多种格式的时间都支持序列化
- simpleModule.addDeserializer(Date.class,CommonDateDeserializer.INSTANCE);
- objectMapper.registerModule(simpleModule);
- return objectMapper;
- }
- }
- 二 在config目录下CommonDateDeserializer继承stdScalarDeserializer序列化类,重写deserialize序列化设置方法
- package com.test.domi.config;
- import com.fasterxml.jackson.core.JsonParser;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.core.JsonToken;
- import com.fasterxml.jackson.databind.DeserializationContext;
- import com.fasterxml.jackson.databind.DeserializationFeature;
- import com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer;
- import org.apache.commons.lang.time.DateUtils;
- import java.io.IOException;
- import java.text.ParseException;
- import java.util.Date;
- public class CommonDateDeserializer extends StdScalarDeserializer {
- public static final CommonDateDeserializer INSTANCE = new CommonDateDeserializer(Date.class);
- private final String[] DATE_FORMAT_STRS = {"yyyy-MM-dd","yyyy/MM/dd"};
- protected CommonDateDeserializer(Class vc) {
- super(vc);
- }
- @Override
- public Object deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
- JsonToken t = jsonParser.getCurrentToken();
- if (t == JsonToken.VALUE_STRING) {
- String str = jsonParser.getText().trim();
- if (str.length() == 0) {
- return getEmptyValue(deserializationContext);
- }
- try {
- return DateUtils.parseDate(str,DATE_FORMAT_STRS);
- } catch (ParseException e) {
- return (java.util.Date)deserializationContext.handleWeirdStringValue(handledType(),str,"expected format \"%s\"");
- }
- }
- if (t == JsonToken.START_ARRAY && deserializationContext.isEnabled(DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS)) {
- jsonParser.nextToken();
- final Date parsed = _parseDate(jsonParser,deserializationContext);
- t = jsonParser.nextToken();
- if (t != JsonToken.END_ARRAY) {
- handleMissingEndArrayForSingle(jsonParser,deserializationContext);
- }
- return parsed;
- }
- return super._parseDate(jsonParser,deserializationContext);
- }
- }
SpringBoot的json序列化及时间序列化处理的更多相关文章
- Newtonsoft.Json序列化日期时间去T的几种方式。
原文地址:MVC web api 返回JSON的几种方式,Newtonsoft.Json序列化日期时间去T的几种方式. http://www.cnblogs.com/wuball/p/4231343. ...
- springboot学习(三)——http序列化/反序列化之HttpMessageConverter
以下内容,如有问题,烦请指出,谢谢! 上一篇说掉了点内容,这里补上,那就是springmvc的http的序列化/反序列化,这里简单说下如何在springboot中使用这个功能. 使用过原生netty ...
- 解决MVC 时间序列化的方法
1.全局处理 处理代码 publict static void SetSerializationJsonFormat(HttpConfiguration config) { // Web API co ...
- IOSerialize,xml和json,soap序列化器,二进制序列化器,XML序列化器,文件 检查、新增、复制、移动、删除
1 文件夹/文件 检查.新增.复制.移动.删除,2 文件读写,记录文本日志/读取配置文件3 三种序列化器4 xml和json1.文件夹/文件 检查.新增.复制.移动.删除,2 文件读写,记录文本日志/ ...
- SpringBoot缓存篇Ⅱ --- 整合Redis以及序列化机制
一.Redis环境搭建 系统默认是使用ConcurrentMapCacheManager,然后获取和创建ConcurrentMapCache类型的缓存组件,再将数据保存在ConcurrentMap中 ...
- JSON与js对象序列化
JavaScript对象表示法(JavaScript Object Notation,简称JSON)是一种轻量级的数据交换格式,它基于js字面量表示法,是js的一个子集.虽然是一个js的子集但是他与语 ...
- Json.Net学习.集合序列化.
只要集合实现了IEnumable接口就可以进行序列化 Json序列化器为序列化及反序列化集合对象提供了良好的支持. ->Serializing 为了序列化一个集合---一个泛型的list,arr ...
- java编解码技术,json序列化与二进制序列化
1.何为json序列化与二进制序列化 通常我们在程序中采用的以json为传输,将json转为对象的就是json序列化了.而二进制序列化通常是我们将数据转换为二进制进行传输,然后在进行各类转换操作 2. ...
- DynamicObject扩展--实现JSON和DynamicObject的序列化与反序列化
度娘许久,找不到我满意的答案,于是自己东凑西凑实现一个. DynamicObject扩展--实现JSON和DynamicObject的序列化与反序列化,亲测良好. 看代码 using System; ...
随机推荐
- day2_jmeter断言
断言就是:检查返回结果,测试是否通过,就是自动帮你校验结果用的 1)添加响应断言 我们模式匹配规格选择包括
- git 码云的常用命令(版本控制)
首先在码云仓库创建对应的仓库 当你输入错误用户名和密码 需要清掉配置 git config --system --unset credential.helper 设置账号 git config --g ...
- 【Python全栈-HTML】HTML入门
HTML入门介绍 参考: https://www.bilibili.com/video/av21663728/?p=339 http://www.cnblogs.com/yuanchenqi/arti ...
- Swift中"#"的用法
配置外部参数名 在函数(或者方法)的参数名前添加"#",可以使该参数拥有相同的本地参数名和外部参数名. 注:在方法中,第二个及后续的参数,默认是具有和内部参数一致的外部参数名的,只 ...
- java Map 怎么遍历
java中遍历MAP的几种方法 Java代码 Map<String,String> map=new HashMap<String,String>(); map.put(& ...
- 海思QT4.8.0开发总结
1.QT4.8.0移植 2.QT4.8.0界面的透明度设置 发现设置空间透明度时候,QT显示的绿色的背景,没有透明!设置如下: 在程序起始的地方设置: hisi_init(); QWSServer:: ...
- 第三节:Windows下检出项目和提交项目
1.将项目下载到本地: 2.在客户端中,右键点击test,选择show in explorer: 然后修改日志文件并保存: 3.在客户端中填写备注并提交: 4.提交到github中:
- 认识程序的执行:从高级语言到二进制,以java为例
java 高级编程语言,面向对象*.java是源码文件*.class是字节码文件,一种中间文件. JDK包含的基本组件包括: javac – 编译器,将源程序转成字节码 jar – 打包工具,将相关的 ...
- MySQL 5.6 Index Condition Pushdown
ICP(index condition pushdown)是mysql利用索引(二级索引)元组和筛字段在索引中的where条件从表中提取数据记录的一种优化操作.ICP的思想是:存储引擎在访问索引的时候 ...
- 手把手教你用 Git(转)
转自:http://blog.jobbole.com/78960/ 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统, ...