当前位置: 首页 > wzjs >正文

绍兴网站制作计划地方o2o同城网站源码

绍兴网站制作计划,地方o2o同城网站源码,wordpress 登陆api,东营住房和城乡建设官网在 Spring MVC 处理中,HttpMessageConverter 负责在 HTTP 报文与 Java 对象之间完成序列化/反序列化。 项目常见需求包括:统一 JSON 日期格式、过滤未知字段、为前端与后端提供一致的时间序列化策略等。 下文以截图中的代码为例说明 如何编写…

在 Spring MVC 处理中,HttpMessageConverter 负责在 HTTP 报文与 Java 对象之间完成序列化/反序列化。
项目常见需求包括:统一 JSON 日期格式、过滤未知字段、为前端与后端提供一致的时间序列化策略等。
下文以截图中的代码为例说明 如何编写并注册自定义 JSON 消息转换器,并给出关键原理与最小可运行配置。


1 HttpMessageConverter 的职责与执行流程

要点说明参考
转换时机Spring MVC 在解析 @RequestBody 或生成 @ResponseBody 时,通过 HttpMessageConverter 完成 Java ↔ JSON/XML 映射Baeldungturn0search0
选择规则Spring 按 注册顺序 遍历转换器:第 1 个声明“我能处理当前媒体类型”即被选中,后续不再尝试Hometurn0search9
默认实现Spring Boot 自动装配了多种实现,JSON 部分由 MappingJackson2HttpMessageConverter 配合全局 ObjectMapper 完成Mediumturn0search8


2 为何需要自定义 JSON 转换器

  • Java 8 日期(LocalDateTime/LocalDate/LocalTime)默认序列化为 ISO-8601,如 2023-05-26T14:45:30

  • 业务常见格式为 yyyy-MM-dd HH:mm 等,需要统一输出/输入格式并容忍未知字段。

  • 通过自定义 ObjectMapper 并置于 首位,即可在不修改实体类的情况下实现全局控制Stack OverflowBaeldung。


3 代码拆解:extendMessageConverters

 

java

复制编辑

@Override protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) { // ① 构造 JSON 消息转换器 MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); // ② 注入自定义 ObjectMapper converter.setObjectMapper(new JacksonObjectMapper()); // ③ 插入 converters 第 0 位,确保优先匹配 converters.add(0, converter); }

步骤作用
创建基于 Jackson 的 JSON 转换器Java Code Geeks
替换默认 ObjectMapper,实现专用序列化策略
将转换器置于索引 0,确保 Spring 首先选择该实现Stack Overflow


4 自定义 JacksonObjectMapper 的关键设置

 

java

复制编辑

public class JacksonObjectMapper extends ObjectMapper { public static final String DATE_TIME_FMT = "yyyy-MM-dd HH:mm"; public static final String DATE_FMT = "yyyy-MM-dd"; public static final String TIME_FMT = "HH:mm:ss"; public JacksonObjectMapper() { // 1. 关闭未知字段失败 this.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); // 2. 注册自定义 (de)serializer SimpleModule module = new SimpleModule() .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DATE_TIME_FMT))) .addSerializer (LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DATE_TIME_FMT))) .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DATE_FMT))) .addSerializer (LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DATE_FMT))) .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(TIME_FMT))) .addSerializer (LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(TIME_FMT))); this.registerModule(module); } }

  • 日期格式统一:通过 LocalDateTimeSerializer/Deserializer 指定业务格式Stack Overflow。

  • 容错设置FAIL_ON_UNKNOWN_PROPERTIES=false 避免前端字段冗余时抛异常Baeldung。


5 完整序列化流程示例

  1. 请求阶段

    • 前端发送 JSON:{"orderTime":"2023-11-01 12:30"}

    • 自定义转换器 → 反序列化为 LocalDateTime 对象,格式解析成功。

  2. 响应阶段

    • Controller 返回含时间字段的实体。

    • 同一转换器序列化 → JSON 输出 "2023-11-01 12:30" 而非 ISO-8601。

  3. 顺序保证

    • 若未在索引 0 插入,Spring 可能使用默认转换器,日期仍为 2023-11-01T12:30:00Stack Overflow。


6 实践注意事项

问题建议
多模块扫描若存在非业务 Controller,需调整 basePackage(),避免生成冗余接口文档。
与 Spring Boot 2.6+当引入 Spring MVC + Spring Boot 2.6+ 时,Springfox 可能不兼容;可升级至 springdoc-openapi + Knife4j 3.x。
性能自定义序列化器无需每次创建,可通过单例 ObjectMapper 复用。

http://www.dtcms.com/wzjs/543246.html

相关文章:

  • 网站建设资讯版块如何做用户运营专业做电子的外贸网站建设
  • 114百事通做网站600镇江网站建设方案
  • 做网站数据对电脑要求珠海做企业网站
  • 如何做网站站内搜索功能wordpress 内容摘要
  • SEO案例网站建设济南万速网站建设
  • 做网站需要建站网站和维护需要会什么区别
  • 嘉兴网站建设有前途吗外国网站后台设计
  • 中文网站排名网站的字体做多大合适
  • 建设厅网站2015154h5类型的网站是怎么做的
  • 一个网站如何推广北京注册公司需要多少钱
  • 南京百度网站建设网络推广培训班
  • 佛山微信网站开发公众号小程序商城怎么制作
  • 青岛网站运营推广网站的站点建设分为
  • 网站服务器哪里的好专业做室内设计的网站有哪些
  • 做博客网站的空间容量需要多少网站首页适配规则
  • 哪个网站做照片书最好看微信小程序后端开发教程
  • 数字博物馆网站建设刚刚合肥最新通告
  • 企业网站建设设计公司河北京电电力建设有限公司网站
  • 账号注册网站wordpress主题很卡
  • 做ppt介绍网站网站建设合同书注意事项
  • 高端网站建设哪家公司好免费网址怎么申请注册
  • 织梦建站教程下载wordpress 无图插件
  • 商城网站建设天软科技汕头仿站定制模板建站
  • 楚雄做网站建设的公司商标注册查询官网中国商标网
  • 中国数据统计网站甘肃网站备案
  • 北京建设网站公司网页传奇游戏排行榜九点开服
  • 做电池的有哪些网站网站主题及风格
  • 分类网站营销做游戏门户网站要注意什么意思
  • 珠海网站管理公司智慧团建密码一般是什么
  • 东莞企石网站建设展示型网站模板源码