我已经使用 jersey 一段时间了,我刚刚实现了一个 POST 方法,该方法获取 Json 作为参数。不过我希望它的功能如下:
// 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;
}
}
不幸的是,这不起作用。即使传递给服务的原始 json 没有任何问题,所有容器变量都为 null。这里的方法是什么,我是否需要使用 String 作为参数并使用 Jackson/Gson 进行反序列化?
最佳答案
如果您尚未添加任何 header ,则需要在 POST 请求中添加 Content-Type header 。 由于您的应用程序正在使用 application/json 您需要添加 Content-Type: application/json 以及您的 POST 请求。
如果您的请求正文采用以下形式: { “容器”: { "isOk": "正确", "message": "新消息" } } 您将得到空值。
请求正文的格式应为: { "isOk": "正确", "message": "新消息" } 这工作得很好。
关于java - Jersey POST 方法参数作为类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11805100/