2014-02-26 193 views
5

中的myController的方法是这样的客户端发送请求是语法不正确发送POST请求

@RequestMapping(value="/{processId}/dependents", method=RequestMethod.POST,consumes="application/json") 
@ResponseBody 
public Dependents postdependent(@ModelAttribute ProcessContext process,@RequestBody Dependent dependent) { 
    return process.getDependents().addDependent(dependent); 
} 

我得和完美的删除工作的时候。 但是,每当我做了一篇文章,我得到客户端发送的请求是语法不正确。 JSON的POST请求:

"{ 
    'dependentId' : '1003', 
    'firstName' : 'Vishu', 
    'lastName' : 'poodari', 
    'birthDate' : '1970/04/15' 
}" 

请我用单引号尝试了所有组合,双引号,应有尽有。

我使用的休息壳做的操作。

请找我的依赖类

public class Dependent { 
    private String dependentId; 
    private String firstName; 
    private String lastName; 
    private String birthDate; 
    @JsonCreator 
    public Dependent(@JsonProperty("dependentId") String dependentId, @JsonProperty("firstName") String firstName, @JsonProperty("lastName")String lastName, 
      @JsonProperty("birthDate") String birthDate) { 
     this.dependentId = dependentId; 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.birthDate = birthDate; 
    } 
    public String getDependentId() { 
     return dependentId; 
    } 
    public void setDependentId(String dependentId) { 
     this.dependentId = dependentId; 
    } 
    public String getFirstName() { 
     return firstName; 
    } 
    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 
    public String getLastName() { 
     return lastName; 
    } 
    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
    public String getBirthDate() { 
     return birthDate; 
    } 
    public void setBirthDate(String birthDate) { 
     this.birthDate = birthDate; 
    } 
} 
+0

向我们展示你的'Dependent'类。另外,将您的日志级别调试并检查日志。 –

+0

已添加依赖类。 – Vishwa

+0

您是否正在发送查询字符串,以便Spring可以生成'@ ModelAttribute'?你期望它是从哪里产生的? –

回答

10

语法不正确是指以JSON问题,请更换双单引号。

{"dependentId" : "1003", 
    "firstName" : "Vishu", 
    "lastName" : "poodari", 
    "birthDate" : "1970/04/15" 
} 

还要检查JSON键应与您相关的类属性的名称和数据不应该被解析器转换。

+1

感谢您的回复。我更正了我的JSON,当我将日志级别更改为调试时,它显示我缺少空的构造函数。现在,它的工作,谢谢大家。 – Vishwa

+1

“我改变了日志级别进行调试,它显示我缺少空的构造函数”你能告诉我如何将这些日志添加到应用程序。 – prime

+0

发生此错误的原因是默认构造函数在类中缺少默认构造函数,并且所有内容都将工作 public Dependent(){ } – abosancic

0

当使用卷曲(在DOS)我有同样的问题。我需要使用所有双引号,因此掩盖了正文部分: C:> curl -H“Content-Type:application/json”-X POST -d“{\”id \“:1,\”名字\“:\”Hans \“,\”姓氏\“:\”集合\“}”http://localhost:8081/persons

4

错误*客户端发送的请求在语法上不正确“**在大多数情况下,是不是能淡化(转换JSON字符串对象),因为默认的构造函数丢失。

在您的情况存在缺失的默认构造函数,你有参数的构造函数覆盖默认和杰克逊无法创建对象

public Dependent(@JsonProperty("dependentId") String dependentId, @JsonProperty("firstName") String firstName, @JsonProperty("lastName")String lastName, 
     @JsonProperty("birthDate") String birthDate) {  this.dependentId = dependentId; 
    this.firstName = firstName; 
    this.lastName = lastName; 
    this.birthDate = birthDate; 
} 

还添加默认的构造函数到类,一切都将是工作

public Dependent() { 
} 
相关问题