发送帖子请求时,客户端发送的请求在语法上是不正确的

Vis*_*hwa 5 rest json spring-mvc restful-url

myController中的方法如下所示

@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);
}
Run Code Online (Sandbox Code Playgroud)

我完全得到并删除了工作.但每当我发帖子时,我收到客户发送的请求在语法上是不正确的.邮件请求的JSON:

"{
   'dependentId' : '1003',
   'firstName'   : 'Vishu',
   'lastName'    : 'poodari',
   'birthDate'   : '1970/04/15'
}"
Run Code Online (Sandbox Code Playgroud)

请用单引号尝试所有组合,双打引用一切.

我正在使用rest-shell来执行操作.

请找我的依赖类

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 12

语法错误意味着json的问题,请用double替换单引号.

{"dependentId" : "1003",
   "firstName"   : "Vishu",
   "lastName"    : "poodari",
   "birthDate"   : "1970/04/15"
}
Run Code Online (Sandbox Code Playgroud)

还要检查json键是否应与您的Dependent类属性名称匹配,并且数据应该可由解析器转换.

  • 谢谢你的回复.我更正了我的json,当我将日志级别更改为调试时,它显示我缺少空构造函数.现在它有效,谢谢大家. (2认同)

abo*_*cic 5

错误*客户端发送的请求在语法上是不正确的"**在大多数情况下意味着jackson无法脱盐(将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;
}
Run Code Online (Sandbox Code Playgroud)

将默认构造函数添加到您的类中,一切都将正常工作

public Dependent() {
}
Run Code Online (Sandbox Code Playgroud)