Java 邮递员发送原始json不工作

Java 邮递员发送原始json不工作,java,json,rest,jersey,postman,Java,Json,Rest,Jersey,Postman,我正在使用jersey使用RESTAPI,我用postman发送原始json,如下所示。 我的代码 但我收到 //Output using raw json username: null, password: null, email: null 我不知道为什么。如果我使用Param(Postman中Send按钮左侧的按钮并设置键值)而不是原始json。它起作用了 //Output when use param username: abc, password: 123456 email: ema

我正在使用jersey使用RESTAPI,我用postman发送原始json,如下所示。 我的代码

但我收到

//Output using raw json
username: null,
password: null,
email: null
我不知道为什么。如果我使用Param(Postman中Send按钮左侧的按钮并设置键值)而不是原始json。它起作用了

//Output when use param
username: abc,
password: 123456
email: email

注意:我确实用内容类型设置了标题:application/json

,正如我在评论中提到的,您需要将数据作为查询参数的一部分传递,或者更改register方法签名以接受一个包含用户名、密码和电子邮件字段的pojo

将您的方法更改为以下内容:

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("register")
public Response register(User user) {
    System.out.println("username: " + user.getUsername() );
    System.out.println("password: " + user.getPassword() );
    System.out.println("email: " + user.getEmail() );
}

public class User{
    private String username = null;
    private String password= null;
    private String email = null;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    } 
}

正如我在评论中提到的,您需要将数据作为查询参数的一部分传递,或者更改register方法签名以接受包含用户名、密码和电子邮件字段的pojo

将您的方法更改为以下内容:

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("register")
public Response register(User user) {
    System.out.println("username: " + user.getUsername() );
    System.out.println("password: " + user.getPassword() );
    System.out.println("email: " + user.getEmail() );
}

public class User{
    private String username = null;
    private String password= null;
    private String email = null;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    } 
}

您使用的是
QueryParam
,但将数据作为正文发送。您需要将数据作为查询参数的一部分传递,或者更改
register
方法签名以接受pojo,pojo中将包含
用户名
密码
电子邮件
字段。因为我打算发送json数组(例如{“email”:[“a”,“b”]),数组不能作为查询参数传递。我该怎么做?您使用的是
QueryParam
,但将数据作为正文发送。您需要将数据作为查询参数的一部分传递,或者更改
register
方法签名以接受pojo,pojo中将包含
用户名
密码
电子邮件
字段。因为我打算发送json数组(例如{“email”:[“a”,“b”]),数组不能作为查询参数传递。如何将查询映射到POJO对象?例如,我在POJO中的字段是userName,所以在Json中它应该是{“userName”:“abc”}?是的。它是通过命名约定映射的。如何将查询映射到POJO对象?例如,我在POJO中的字段是userName,所以在Json中它应该是{“userName”:“abc”}?是的。它通过命名约定进行映射。