在POST方法中从poster到jersey获取一个空的JSONObject



我是java Web开发的新手,目前正在使用Jersey for REST。当我试图将POST方法中的参数作为JSONObject时,我得到了空的JSONObject。但我找到了一种使用bean类和JAX-B映射的替代方法。问题是,我知道有一种方法可以直接将它作为JSONObject获得,因为我以前使用过它,我无法理解。

这是我想使用的代码

@POST
@Path("addstate")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response addState(JSONObject newState) throws JSONException
{

System.out.println(newState);
return Response.status(Status.ACCEPTED).entity(newState).build();
}

但是我得到的输出是

{}

我认为我犯的错误是,我为JSON添加了多个提供程序。取消注释";球衣媒体json绑定";依赖关系,同时使用maven原型创建jersey项目,以便为项目使用JsonObject类等。

这个依赖项最初会被注释,只需删除对它的注释

<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-binding</artifactId>
</dependency>

为了将属性绑定到Bean类,我们可以使用前一个包附带的注释。

现在我可以使用了,

import jakarta.json.JsonObject;
...
Class MyResource
{
...
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public JsonObject getJson(JsonObject obj)
{
System.out.println(obj);
return obj;
}
}

通过从jakarta.json.JsonObject导入JsonObject;

如果您希望使用其他JSON提供程序,请不要忘记注册它们(除非它自动注册(。

最新更新