我是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提供程序,请不要忘记注册它们(除非它自动注册(。