如何应对Spring Web Jackson中RequestBody反序列化失败的问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计814个文字,预计阅读时间需要4分钟。
最近在用Spring Web做Restful API实现时,遇到了一个问题:使用@RequestBody注解接收JSON数据时,无法被正常反序列化。服务端代码大致如下:
java@RequestMapping(value=/aqua, method=RequestMethod.POST)public Aqua crea(@RequestBody Aqua aqua) { // 处理业务逻辑}
最近在用Spring Web做一些Restful API的实现试验,碰到了@RequestBody 的JSON无法被正常反序列化的问题。服务端的代码大致如下:
@RequestMapping(value = "/aquas", method = RequestMethod.POST) public Aqua createAqua(@RequestBody Aqua aqua) { return aqua; }
研究后发现,由于Aqua这个实体类缺少了默认的无参构造函数(如果自行添加了有参数的构造函数,默认的无参构造函数就需要手动添加),Spring Web默认使用的JSON序列化框架-Jackson就无法正常反序列化。此时服务器会返回400 Bad Request.
解决的方法很多,比较简单直接的方法是在Aqua这个实体类里面加一个无参的构造函数。
本文共计814个文字,预计阅读时间需要4分钟。
最近在用Spring Web做Restful API实现时,遇到了一个问题:使用@RequestBody注解接收JSON数据时,无法被正常反序列化。服务端代码大致如下:
java@RequestMapping(value=/aqua, method=RequestMethod.POST)public Aqua crea(@RequestBody Aqua aqua) { // 处理业务逻辑}
最近在用Spring Web做一些Restful API的实现试验,碰到了@RequestBody 的JSON无法被正常反序列化的问题。服务端的代码大致如下:
@RequestMapping(value = "/aquas", method = RequestMethod.POST) public Aqua createAqua(@RequestBody Aqua aqua) { return aqua; }
研究后发现,由于Aqua这个实体类缺少了默认的无参构造函数(如果自行添加了有参数的构造函数,默认的无参构造函数就需要手动添加),Spring Web默认使用的JSON序列化框架-Jackson就无法正常反序列化。此时服务器会返回400 Bad Request.
解决的方法很多,比较简单直接的方法是在Aqua这个实体类里面加一个无参的构造函数。

