Java Jersey POST方法参数作为类对象
我已经使用jersey一段时间了,我刚刚实现了一个POST方法,该方法使用Json作为参数。但是,我希望它的功能如下:Java Jersey POST方法参数作为类对象,java,json,jersey,Java,Json,Jersey,我已经使用jersey一段时间了,我刚刚实现了一个POST方法,该方法使用Json作为参数。但是,我希望它的功能如下: // The json class to be used and returned @XmlRootElement public class Container { private boolean isOk; private String message; public Container() {}
// The json class to be used and returned
@XmlRootElement
public class Container
{
private boolean isOk;
private String message;
public Container() {}
public boolean getOk()
{
return this.isOk;
}
public void setOk(boolean isOk)
{
this.isOk = isOk;
}
}
// A service
@Path("json/test")
public class TestService
{
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Container readAndReturnMessage(Container receivedJson)
{
doSomething(receivedJson.getMessage());
return receivedJson;
}
}
不幸的是,这不起作用。所有容器变量都为null,即使传递给服务的原始json没有任何错误。这里的方法是什么,我是否需要使用字符串作为参数,并使用Jackson/Gson进行反序列化?为您的
容器添加getter和setter
类
upd。是用于创建JavaBean的转换。见namings一节。顺便说一下,我在布尔字段方面失败了。最好的方法是:
boolean ok;
public boolean isOk(){
return this.ok;
}
/* if setter is required */
public setOk(boolean ok){
this.ok = ok;
}
如果您没有添加任何标题,则需要在POST请求中添加内容类型标题。 因为,您的应用程序正在使用需要添加的application/json 内容类型:应用程序/json与您的POST请求 如果您的请求正文的格式为: { “容器”:{ “isOk”:“true”, “消息”:“新消息” } } 您将获得空值 请求机构的形式应为: { “isOk”:“true”, “消息”:“新消息” }
这很好。对不起,这里有getter和setter。我忘了添加它们。如果变量名是
isOk
,那么getter必须是getIsOk()
和setter`setIsOk(boolean isOk)在这种情况下,变量真的依赖于它们的getter和setter吗?