Spring MVC 接收的 JSON 嵌套对象的 Spring Boot JACKSON 配置

Posted

技术标签:

【中文标题】Spring MVC 接收的 JSON 嵌套对象的 Spring Boot JACKSON 配置【英文标题】:SpringBoot JACKSON configuration for JSON nested objects received by Spring MVC 【发布时间】:2016-03-01 16:23:02 【问题描述】:

我已经创建了 Spring Boot 应用程序,在这个应用程序中我有

@RestController
public class OfferController 

    @RequestMapping(value = "/saveOffer", method = RequestMethod.POST)
    public void saveOffer(@RequestBody Offer offer) 
    //...
    

Offer 类包含 Address 类型的嵌套属性

public class Offer 

   private String title;
   private Address address;

   //... getters setters etc

当我从 UI 发送 JSON


  "offer": 
    "title":"TheBestOffer",
    "address": 
      "city": "Warsaw"
    
  

我的 REST 控制器收到 Offer,Address 属性为空,但 title 属性包含值 "TheBestOffer"(发送时)。

我假设 JACKSON 随 Spring Boot 一起交付需要对嵌套对象进行一些额外配置?我试过这样做,但没有用:/

【问题讨论】:

【参考方案1】:

Spring 会自动执行此操作,我认为您的问题在于 json。

您需要删除优惠标签。


    "title":"TheBestOffer",
    "address": 
      "city": "Warsaw"
    

【讨论】:

但是为什么它会填充 title 属性呢? 我不确定为什么要设置 title 属性(我做了一些测试并没有设置值),但这是发送请求正文的正确方法。

以上是关于Spring MVC 接收的 JSON 嵌套对象的 Spring Boot JACKSON 配置的主要内容,如果未能解决你的问题,请参考以下文章

spring MVC 如何接收前台传入的JSON对象数组

spring mvc接收ajax提交的JSON数据,并反序列化为对象

在spring mvc控制器接收json并反序列化为对象列表

spring mvc json 直接把一个对象转换成json格式输出到jsp页面

spring mvc接收参数方式,json格式返回请求数据

Spring MVC接收不到参数的可能原因