SpringBoot如何使用Jackson返回JSON数据日期格式化
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章主要讲解了"SpringBoot如何使用Jackson返回JSON数据日期格式化",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringBo
千家信息网最后更新 2025年02月05日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 JsonSerializer
spring: 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安全错误
数据库的锁怎样保障安全
云服务器网站配置
仙影软件开发工作室
微山手机软件开发
浪潮服务器有没有一键恢复
互联网电子科技
中拓互联网科技有限公司电话
三国志下载软件开发
游戏软件开发术语
大 连软件开发招聘
福建微信小程序软件开发
旅游软件开发项目
数据库备份恢复日読
德州扑礁网络技术
网络安全平台怎么签到
德阳app与软件开发
为什么要学网络安全与运维
宣传媒体网络安全
战舰世界国服怎么换服务器
东北大学网络安全实验报告
上海榕基软件开发分公司
飞鼠网络技术
聊城诚信积分管理软件开发软件
软件开发薪资参考
gdc服务器是管理员密码
数据库计算平均值的聚合函数
十四五规划网络安全如何做
创维电视连接认证服务器异常
方大同吉他谱软件开发
数据库技术历程
济南玉墨网络技术有限公司