SpringBoot如何使用Jackson返回JSON数据日期格式化
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要讲解了"SpringBoot如何使用Jackson返回JSON数据日期格式化",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringBo
千家信息网最后更新 2025年12月02日SpringBoot如何使用Jackson返回JSON数据日期格式化
这篇文章主要讲解了"SpringBoot如何使用Jackson返回JSON数据日期格式化",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringBoot如何使用Jackson返回JSON数据日期格式化"吧!
@Bean@Primary@ConditionalOnMissingBean(ObjectMapper.class)public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.createXmlMapper(false).build(); // 通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化 // Include.Include.ALWAYS 默认 // Include.NON_DEFAULT 属性为默认值不序列化 // Include.NON_EMPTY 属性为 空("") 或者为 NULL 都不序列化,则返回的json是没有这个字段的。这样对移动端会更省流量 // Include.NON_NULL 属性为NULL 不序列化 objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); // 允许出现特殊字符和转义符 objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true); // 允许出现单引号 objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true); // 字段保留,将null值转为"" objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializerspring: jackson: #日期格式化 date-format: yyyy-MM-dd HH:mm:ss serialization: #格式化输出 indent_output: true #忽略无法转换的对象 fail_on_empty_beans: false #设置空如何序列化 defaultPropertyInclusion: NON_EMPTY deserialization: #允许对象忽略json中不存在的属性 fail_on_unknown_properties: false parser: #允许出现特殊字符和转义符 allow_unquoted_control_chars: true #允许出现单引号 allow_single_quotes: true
/** * 测试日期 * @param joinDay * @return */ @RequestMapping("date") public Date testDate(Date joinDay){ return joinDay; }package com.streamyear.course.config; import org.springframework.core.convert.converter.Converter;import org.springframework.stereotype.Component; import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List; /** * 全局页面传入日期字符串,自动转换成日期格式 */@Componentpublic class DateConverterConfig implements Converter { private static final List formarts = new ArrayList<>(4); static{ formarts.add("yyyy-MM"); formarts.add("yyyy-MM-dd"); formarts.add("yyyy-MM-dd hh:mm"); formarts.add("yyyy-MM-dd hh:mm:ss"); } @Override public Date convert(String source) { String value = source.trim(); if ("".equals(value)) { return null; } if(source.matches("^\\d{4}-\\d{1,2}$")){ return parseDate(source, formarts.get(0)); }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){ return parseDate(source, formarts.get(1)); }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){ return parseDate(source, formarts.get(2)); }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){ return parseDate(source, formarts.get(3)); }else { throw new IllegalArgumentException("Invalid boolean value '" + source + "'"); } } /** * 格式化日期 * @param dateStr String 字符型日期 * @param format String 格式 * @return Date 日期 */ public Date parseDate(String dateStr, String format) { Date date=null; try { DateFormat dateFormat = new SimpleDateFormat(format); date = dateFormat.parse(dateStr); } catch (Exception e) { } return date; } } @Configurationpublic class JacksonConfiguration { @Bean public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = new ObjectMapper(); // 忽略json字符串中不识别的属性 objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); // 忽略无法转换的对象 "No serializer found for class com.xxx.xxx" objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); // NULL不参与序列化// objectMapper.setSerializationInclusion(Include.NON_NULL); // PrettyPrinter 格式化输出 objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true); // 指定时区,默认 UTC,而不是 jvm 默认时区 objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8:00")); // 日期类型处理 objectMapper.setDateFormat(new SimpleDateFormat(DateUtil.DEFAULT_FORMAT_DATETIME)); converter.setObjectMapper(objectMapper); return converter; } /** * BeanPostProcessor 的便捷实现,以便对带注解的方法上执行方法级别的校验 * 注意:需要在目标类上室友 @Validated 注解进行注释,以便搜索其内联约束注释的方法 * A convenient BeanPostProcessor implementation * that delegates to a JSR-303 provider for performing method-level validation on annotated methods * @return */ @Bean public MethodValidationPostProcessor methodValidationPostProcessor() { return new MethodValidationPostProcessor(); }}感谢各位的阅读,以上就是"SpringBoot如何使用Jackson返回JSON数据日期格式化"的内容了,经过本文的学习后,相信大家对SpringBoot如何使用Jackson返回JSON数据日期格式化这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
日期
格式
序列
字符
对象
属性
数据
方法
学习
特殊
内容
字段
字符串
引号
时区
注解
注释
转义
输出
便捷
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
纵观全国全省网络安全形势
动画软件开发学什么专业
昇腾互联网科技
杭州市弈天网络技术有限公司
网络安全规定关键
开源数据库安全性
网络安全小心行观后感
企业服务器一般多少平米
云上贵州服务器价格
数据库i o
逻辑数据库分为两类
32岁还建议学软件开发吗
初级网络安全工程师认证
加油服务器
图书馆数据库设计pdf下载
倚天1 数据库删除
游戏服务器上线标准
服务器ip丢失是什么原因造成的
直播铅山网络安全
嘉定区网络营销网络技术备案
网络安全与电子商务的关系
并集数据库
上海本地网络技术诚信为本
网络技术课题工作内容
fiery服务器 下载
怎么对接知网数据库
深圳巡检软件开发怎么收费
中国互联网科技学校
英文阅读数据库
移动端软件开发标准