REST 与 Spring 和 Jackson 完整数据绑定

2024-01-31

我正在使用 Spring MVC 来处理 JSON POST 请求。在幕后,我使用的是基于 Jackson JSON 处理器构建的 MappingJacksonHttpMessageConverter,并在使用 mvc:annotation-driven 时启用。

我的一项服务收到一系列操作:

@RequestMapping(value="/executeActions", method=RequestMethod.POST)
    public @ResponseBody String executeActions(@RequestBody List<ActionImpl> actions) {
        logger.info("executeActions");
        return "ACK";
    }

我发现 Jackson 将 requestBody 映射到 java.util.LinkedHashMap 项列表(简单数据绑定)。相反,我希望将请求绑定到类型对象列表(在本例中为“ActionImpl”)。

我知道如果您直接使用 Jackson 的 ObjectMapper,这很容易做到:

List<ActionImpl> result = mapper.readValue(src, new TypeReference<List<ActionImpl>>() { }); 

但我想知道使用 Spring MVC 和 MappingJacksonHttpMessageConverter 时实现此目的的最佳方法是什么。有什么提示吗?

Thanks


我发现您还可以通过使用数组作为 @RequestBody 而不是集合来解决类型擦除问题。例如,以下内容可以工作:

public @ResponseBody String executeActions(@RequestBody ActionImpl[] actions) { //... }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

REST 与 Spring 和 Jackson 完整数据绑定 的相关文章

随机推荐

  • Powershell 返回错误结果

    我在 Powershell 中遇到了这个奇怪的问题 而不是在其他语言中 谁能向我解释一下为什么会发生这种情况 我尝试返回指定的数字 数字 8 但该函数不断向我抛出所有内容 这是一个错误还是设计使然 Function GetNum Retur
  • 处理两个 != 子句的 OR 语句 Python

    使用Python 2 7 我知道这是非常基本的 但为什么下面的语句不能按书面方式工作 input int raw input while input 10 or input 20 print Incorrect value try agai
  • 如何将 PHP 回溯保存到错误日志中?

    我现在正在使用这个 error log serialize debug backtrace 但我每次都必须反序列化它 有没有更好的方法来存储回溯 这应该生成一个可读的字符串 error log print r debug backtrace
  • .NET for Windows 8 配置文件中的程序集列表

    我正在寻找 NET for Windows 8 配置文件中的程序集列表 这是用于 WIndows 8 Metro 风格应用程序的配置文件 与 Silverlight 一样 它不使用完整的 NET 框架 用于 Metro 风格应用程序的 NE
  • 错误消息“java.net.SocketException:套接字失败:EACCES(权限被拒绝)”

    我收到错误消息 java net SocketException 套接字失败 EACCES 权限被拒绝 当我尝试应用下面的代码时 这是我调用的函数并给了我这个异常 public void run TODO Auto generated me
  • 如何在 ImageMagick 中绘制文本并为其添加阴影?

    我正在图像上打印一些文本convert我想用黑色阴影装饰文本 我尝试过 blur or 高斯但我不能应用于文本 它仅应用于背景图像 我需要使用 draw命令与否 注释 这是我需要更新阴影的代码 font geometricslab703bt
  • Curl 错误 tlsv1 警报协议版本

    以下curl 请求返回错误 有人可以解释一下出了什么问题以及如何纠正它 我已经尝试强制curl使用不同的ssl版本 sslv3和 sslv2 但这不起作用 curl exe GET https www expert nl verbose i
  • 存储波兰语字符 mysql

    我试图保存 等字符 但它们以问号的形式保存在数据库中 我使用 phpMyAdmin 保存它们 数据库和表的排序规则是utf8 bin 尝试将排序规则更改为 utf8 unicode ci or utf8 polish ci 您可以参考 ht
  • Travis-CI中的新作业无法获取curl库

    我已经使用许多 apt get 配置了 Travis CI 并且运行完美 但从本周开始 apt get 失败 部分库无法检索 我没有更改代码 我怎么解决这个问题 有问题的库是curl 工作内容 4天前 https travis ci org
  • ExpandableList View 不展开

    我正在尝试个性化 ExpandableListTview I create Iterator Xml 带有 ExpandableList 视图 group xml 带有简单 TextView 和 Button 的相对布局 Child xml
  • 有没有办法使用 CSS 使这个 SVG 具有渐变动画效果?

    所以我发现this https i pinimg com originals 4b c7 68 4bc7687858221c6b60d7b02fe0740670 png在 Google 上搜索了一个图像 并想尝试重新创建该图形并将其动画化
  • 管理 LINQ to SQL .dbml 模型复杂性

    这个问题在一定程度上解决了这个问题LINQ to SQL dbml 最佳实践 https stackoverflow com questions 33664 best practices for managing linq to sql d
  • 为什么使用 primeng p-radiobutton 会导致 Angular 9 中出现原生元素错误?

    我有一个项目最近从 Angular 8 迁移到 Angular 9 该项目使用primeng version 4 3 0 现在p radiobutton标签在整个项目中广泛用于显示单选按钮 但它无法正常工作 这p radiobutton标签
  • XCTests 在物理设备上失败:“由于超时而取消测试......”

    XCTests 失败并显示以下消息 Canceling tests due to timeout in Waiting for test process to check in 这只是最近几天才开始出现的 我使用的是 Xcode 7 3 1
  • 在 JavaScript 中访问 JSON 对象(已解析)中的数据

    我需要从这个 JSON 对象获取数据 消息 我怎样才能用 JavaScript 做到这一点 例如 要访问姓氏 我只需使用 response i user lastname 但我怎样才能访问这些消息呢 user last message me
  • git rebase 和删除的 rebase 分支导致“交互式 rebase 已启动”错误消息

    我当时正在尝试使用几个分支进行一些操作 因此我在一个临时分支上重新建立了基础 并且当我决定不以另一种方式完成重新建立基础时 我正在解决一些冲突 然后我删除了涉及的临时分支并继续我的快乐之路 几个小时后 我想重新建立另一个分支并收到此错误消息
  • Rails:如何覆盖:destroy 方法?

    我尝试了很多方法来覆盖 destroy 方法的行为 但没有任何效果 我首先使用了 acts as paranoia 插件 但它不适用于 has many through 关联中的模型 我想覆盖 destroy 方法只是为了做这样的事情 de
  • Angular 2 在事件发出时调用函数/方法

    我有一个组件 当单击关闭按钮时可以从页面中删除该组件 我曾曝光过一个testClose用户可以注册以在组件关闭时执行某些操作的事件 如何注册该事件以在组件关闭时调用函数 例如 我想在 TestComponent 关闭时将 closeCoun
  • Scala 2.9 中的“scala.sys.process”如何工作?

    我刚刚看了新的scala sys and scala sys process包看看这里是否有帮助 然而 我完全不知所措 有人有关于如何实际启动流程的示例吗 而且 这对我来说最有趣 你能分离进程吗 当父进程结束时 分离进程将继续运行 这是 A
  • REST 与 Spring 和 Jackson 完整数据绑定

    我正在使用 Spring MVC 来处理 JSON POST 请求 在幕后 我使用的是基于 Jackson JSON 处理器构建的 MappingJacksonHttpMessageConverter 并在使用 mvc annotation