You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot控制器中Jackson如何反序列化输入Map对象?

接收Map输入的Spring Boot PATCH控制器实现

我最近刚好写了一个用来接收Map作为输入的Spring Boot控制器,专门处理资源的部分更新场景,代码给你参考:

@RequestMapping(value = "/providers", method = RequestMethod.PATCH, headers = "Accept=application/json")
@ResponseBody
@Transactional
public Map<String, Object> updateProvider(@RequestBody Map<String, Object> updates, 
                                           UriComponentsBuilder uriComponentsBuilder, 
                                           final HttpServletRequest request) {
    return updates;
}

关键细节拆解:

  • 使用RequestMethod.PATCH请求方法:完全贴合RESTful风格的部分资源更新场景,和PUT的全量更新做区分
  • 通过@RequestBody绑定Map:直接把JSON请求体转换成Map<String, Object>,不用专门定义DTO类就能灵活接收任意键值对形式的更新参数
  • headers = "Accept=application/json":限定接口只处理客户端声明接受JSON响应的请求,避免处理不符合预期的请求类型
  • @Transactional注解:给方法加上事务上下文,后续如果扩展数据库更新逻辑的话,能保证操作的原子性
  • 返回原updates对象:可以快速验证请求参数是否被正确接收,非常方便调试阶段使用

另外关于你提到的Spring Boot application.properties里的Jackson配置,我常用的配置项供你参考:

# 序列化时忽略空值属性,减少响应冗余
spring.jackson.default-property-inclusion=non_null
# 允许解析请求体中的未知属性,避免因额外字段抛出异常
spring.jackson.deserialization.fail-on-unknown-properties=false

这些配置能让Jackson在JSON和Map的转换过程中更灵活,适配更多业务场景。

内容的提问来源于stack exchange,提问作者AlejoDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:13:19