2013-10-11 116 views
1

使用接受JSON请求主体的Spring MVC开发REST Web服务。 并进一步处理收到的消息。 荫使用下列内容: 的Eclipse,Tomcat的,春天3.0.1,杰克逊lib下,卷曲用于测试Web服务使用Spring MVC的REST webservice在发布JSON时返回null


    `curl -i -H "Content-Type: application/json" -H "Accept: application/json" -X POST -d '{"fname":"my_firstname" , "lname":"my_lastname"}' http://localhost:8080/SpringMVC/restful`

返回

"Saved person: null null"

我的控制器类



     import com.samples.spring.Person; 

    @Controller 
    public class RestController { 

    @RequestMapping(value="{person}", method = RequestMethod.POST) 
    @ResponseBody 
     public String savePerson(Person person) { 
      // save person in database 
      return "Saved person: " + person.getFname() +" "+ person.getLname(); 
     } 

我人类




     package com.samples.spring; 

    public class Person { 

     public String fname; 
     public String lname; 

     public String getFname() { 
      return fname; 
     } 
     public void setFname(String fname) { 
      this.fname = fname; 
     } 
     public String getLname() { 
      return lname; 
     } 
     public void setLname(String lname) { 
      this.lname = lname; 
     } 
    } 

+0

解决。做了两件事情如下:1)增加了@RequestBody 2)改变了Curl的JSON参数从-d'{“fname”:“my_firstname”,“lname”:“my_lastname”}'---- -d“{ “”“fname”“”:“”“my_firstname”“”“,”“”lname“”“:”“”my_lastname“”“}”。任何人都可以解释吗? – user2870419

回答

5

尝试添加@RequestBody

@RequestMapping(value="{person}", method = RequestMethod.POST) 
@ResponseBody 
    public String savePerson(@RequestBody Person person) { 
     // save person in database 
     return "Saved person: " + person.getFname() +" "+ person.getLname(); 
    } 
0

尝试添加一个构造你的Person类:

public Person(String fname, String lname) { 
    this.fname = fname; 
    this.lname = lname; 
}