Java spring引导请求主体不工作

Java spring引导请求主体不工作,java,spring,spring-mvc,spring-boot,Java,Spring,Spring Mvc,Spring Boot,我正在学习&springboot新手,并尝试创建一个接收post请求的控制器,但在整个测试过程中,控制器总是接收null请求体对象。请告诉我我做错了什么 { "user":{ "name":"teste", "lastName":"teste" } "contact":{ "email":"teste@teste.com", "phone":"0123456789" } "isMarried":true }

我正在学习&springboot新手,并尝试创建一个接收post请求的控制器,但在整个测试过程中,控制器总是接收null请求体对象。请告诉我我做错了什么

{  
   "user":{  
      "name":"teste",
      "lastName":"teste"
   }   "contact":{  
      "email":"teste@teste.com",
      "phone":"0123456789"
   }   "isMarried":true
}
Java类:

@RequestMapping(method=RequestMethod.POST,value= "/user", consumes= MediaType.ALL_VALUE ) 
public ResponseEntity<Void> login(@RequestBody User user, 
        @RequestBody contact,
        boolean isMarried){ 
    System.out.println(user.getUsername()); 
    return new ResponseEntity<Void>(HttpStatus.CREATED); 
}
@RequestBody注释应该表示请求的整个主体,并且它只绑定到请求中的一个对象。因此,您必须更改输入json格式、post方法签名,并创建一个封装类来保存用户、联系人和IsMarried数据

{
   "user": {
      "name": "teste",
      "lastName": "teste"
   },
   "contact": {
      "email": "teste@teste.com",
      "phone": "0123456789"
   },
   "isMarried": true
}


@RequestMapping(method=RequestMethod.POST,value= "/user", consumes= MediaType.ALL_VALUE )
public ResponseEntity<Void> login(@RequestBody UserDetail userDetail){
   System.out.println(userDetail.getUser.getUsername()); 
   return new ResponseEntity<Void>(HttpStatus.CREATED);
}

class UserDetail{
 User user;
 Contact contact;
 boolean married;
}

您只能发送这样的用户详细信息

@RequestMapping(method=RequestMethod.POST,value= "/user", consumes= MediaType.ALL_VALUE )
public ResponseEntity<Void> login(@RequestBody User user){
    System.out.println(user.getName()); 
    System.out.println(user.getLastName()); 

    return new ResponseEntity<Void>(HttpStatus.CREATED);
}
{ 姓名:teste, 姓氏:teste }

您的请求方法应该如下所示

@RequestMapping(method=RequestMethod.POST,value= "/user", consumes= MediaType.ALL_VALUE )
public ResponseEntity<Void> login(@RequestBody User user){
    System.out.println(user.getName()); 
    System.out.println(user.getLastName()); 

    return new ResponseEntity<Void>(HttpStatus.CREATED);
}

希望这能有所帮助。

谢谢你的回答,还有一个问题,如果我在请求中只发送用户,比如:{User{:name:teste,lastName},可以了吗?当然可以,但是联系人详细信息和军事状态的值将为空。我将提供语法作为答案。是的,它会工作,您的联系人对象将为null,而您的联系人对象将为false。JSON始终是一个键、值对符号,因此元素是可选的,如果您不提供任何内容,只发送{},它仍然会创建UserDetail对象,但为空。很高兴我能够提供帮助。欢迎来到堆栈溢出。请注意,在这里说“谢谢”的首选方式是,一旦你有足够的声誉,就投票选出好的问题和有用的答案,并接受对你提出的任何问题最有用的答案,这也会给你的声誉带来一点提升。请看和
@RequestMapping(method=RequestMethod.POST,value= "/user", consumes= MediaType.ALL_VALUE )
public ResponseEntity<Void> login(@RequestBody User user){
    System.out.println(user.getName()); 
    System.out.println(user.getLastName()); 

    return new ResponseEntity<Void>(HttpStatus.CREATED);
}