Java 如何在Spring boot中注册和设置默认消息转换器

Java 如何在Spring boot中注册和设置默认消息转换器,java,spring,spring-boot,Java,Spring,Spring Boot,我是SpringBoot新手,我注意到默认的消息转换器不反序列化嵌套对象 public class Area { public String name; public Country country; } public class Country { public String name; } 如果我将此json发布到服务器 {“姓名”:“某地”、“国家”:[{“姓名”:“某地”}]} 什么也没发生 您能告诉我如何才能正确组装@RequestBody Area对象吗?您向

我是SpringBoot新手,我注意到默认的消息转换器不反序列化嵌套对象

public class Area {
   public String name;
   public Country country;
}

public class Country {
    public String name;
}
如果我将此json发布到服务器 {“姓名”:“某地”、“国家”:[{“姓名”:“某地”}]} 什么也没发生


您能告诉我如何才能正确组装@RequestBody Area对象吗?

您向我们展示的请求正文不正确,国家/地区值中有一些额外的方括号

请求主体应如下所示:

 {
     "name": "someplace",
     "country": {
         "name": "somecountry"
     }
 }
以下设置适用于我,以防您需要一些参考:

@EnableAutoConfiguration
@ComponentScan
@RestController
public class Main {

    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }

    @RequestMapping(value = "/region", method = RequestMethod.POST)
    public void region(@RequestBody Area area) {
        System.out.println("Received area: " + area);
    }
}

您向我们显示的请求正文不正确,国家/地区值中有一些额外的方括号

请求主体应如下所示:

 {
     "name": "someplace",
     "country": {
         "name": "somecountry"
     }
 }
以下设置适用于我,以防您需要一些参考:

@EnableAutoConfiguration
@ComponentScan
@RestController
public class Main {

    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }

    @RequestMapping(value = "/region", method = RequestMethod.POST)
    public void region(@RequestBody Area area) {
        System.out.println("Received area: " + area);
    }
}

Gabriel是正确的,您不需要为您的用例执行此操作,但一般来说,您可以添加类型为
ObjectMapper
@Bean
,并以您喜欢的任何方式对其进行自定义。(详细信息请参见。)

Gabriel是正确的,您不需要为您的用例执行此操作,但一般来说,您可以添加类型为
ObjectMapper
@Bean
,并以任何您喜欢的方式对其进行自定义。(详情请参见。)

True,如果有一些特殊要求,可以通过ObjectMapper实例进一步定制JSON编组和解编组。我在使用一些Yahoo REST API时也这样做了。的确,如果有一些特殊要求,JSON编组和解编可以通过ObjectMapper实例进一步定制。我在使用一些Yahoo REST API时也这样做了。