SpringBoot如何使用Jackson返回JSON数据日期格式化
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"SpringBoot如何使用Jackson返回JSON数据日期格式化",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringBo
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
互联网金融监管科技数据
科技制造互联网公司
互联网科技公司电话
奇酷互联网科技
唐信互联网科技
世界互联网领先科技成果
富国互联网科技创新基金
互联网科技公司需要的职位
恒银科技与互联网金融
互联网企业和科技型企业
厦门千工互联网科技有限公司
互联网科技公司有风险吗
长沙互联网科技
工业互联网山东科技大学
梅州GM互联网络科技有限公司
东营紫格互联网科技
萌小萌互联网科技河南有限公司
世界互联网科技成果奖
互联网科技职业技能培训学校
广州三三互联网科技有限公司
有格互联网科技
期待互联网科技
善班互联网科技
卓越科技(互联网 )
深圳天众互联网科技公司
深圳艾佳互联网科技
互联网科技公司有风险吗
沐思想互联网科技有限公司
山东蛋芒互联网科技有限公司
平安好医生打造互联网科技医疗