Json 由于无法解析对象,客户端发送的请求在语法上不正确

Json 由于无法解析对象,客户端发送的请求在语法上不正确,json,spring-mvc,post,Json,Spring Mvc,Post,我构建了一个springmvc PostRESTAPI。它将接受一个发布的对象“Test”。但当我通过邮递员提交邮件请求时。我发现错误: <body> <h1>HTTP Status 400 - </h1> <div class="line"></div> <p> <b>type</b> Status report </p> <

我构建了一个springmvc PostRESTAPI。它将接受一个发布的对象“Test”。但当我通过邮递员提交邮件请求时。我发现错误:

<body>
    <h1>HTTP Status 400 - </h1>
    <div class="line"></div>
    <p>
        <b>type</b> Status report
    </p>
    <p>
        <b>message</b>
        <u></u>
    </p>
    <p>
        <b>description</b>
        <u>The request sent by the client was syntactically incorrect.</u>
    </p>
    <hr class="line">
    <h3>Apache Tomcat/8.0.35</h3>
</body>
以下是POST请求的json数据:

{
  "name": "name",
  "user": {
    "id": 1,
    "age": 0,
    "name": "user",
    "address": null,
    "email": null
  }
}
下面是对象“测试”:

字段用户是类用户的实例


为更新而编辑
在我的“测试”类中,我常常错过默认构造函数。将默认构造函数添加到类后。问题解决了。但我不确定为什么默认构造函数很重要。任何人都可以在这方面提供帮助?

Spring MVC默认情况下使用无参数cstor和setter配置bean。您需要手动更改beans.xml以通过args cstors配置bean。

是否在中指定了内容类型postman@VikramSingh是的,内容类型是“application/json”。我过去常常错过“Test”类中的默认构造函数。将默认构造函数添加到类后。问题解决了。
{
  "name": "name",
  "user": {
    "id": 1,
    "age": 0,
    "name": "user",
    "address": null,
    "email": null
  }
}
public class Test implements Serializable {
    private static final long serialVersionUID = -7788619177798333712L;
    private String name;
    private User user;

    public Test( String name ) {
        this.name = name;
    }

    public Test( String name, User user ) {
        this( name );
        this.user = user;
    }

    public String getName() {
        return name;
    }

    public User getUser() {
        return user;
    }

    public void setName( String name ) {
        this.name = name;
    }

    public void setUser( User user ) {
        this.user = user;
    }

    public String toString() {

        StringBuilder sb = new StringBuilder( "[ " );
        sb.append( "name: " ).append(this.name).append( ", " );
        sb.append( user.toString() ).append( " ]" );

        return sb.toString();
    }
}