gpt4 book ai didi

java - Jersey 返回一个 JSONObject

转载 作者:太空宇宙 更新时间:2023-11-04 06:34:22 25 4
gpt4 key购买 nike

是否可以在 Jersey 中返回 JSONObject ?这是我想要实现的目标:

@Path("/path")
@get
@Produces(MediaType.APPLICATION_JSON)
public JSONObject foo()
{
...
JSONObject json = getJsonObject();
return json;
}

我尝试编写上述代码,但遇到了一些关于 JSONObject 类的 getter 和 setter 的错误。

有什么建议吗?

这是我得到的堆栈跟踪:

org.codehaus.jackson.map.JsonMappingException: No serializer found for class org.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) )
org.codehaus.jackson.map.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:52)
org.codehaus.jackson.map.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:25)
org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610)
org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256)
org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:1604)
org.codehaus.jackson.jaxrs.JacksonJsonProvider.writeTo(JacksonJsonProvider.java:558)
com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy.writeTo(JacksonProviderProxy.java:160)
com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:302)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1510)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:540)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:715)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

最佳答案

首先,您只需输入即可返回 json

@Produces("application/json")

有了这个 Jersey 就会知道输出是 json 格式,但我不知道为什么你使用 JSONObject,你可以使用任何 Class,服务器只需将其转换为 json

@XmlRootElement
public class MyClass {}

MyClass 现在可以像返回类型一样使用,因此更加简单方便。

示例:

@XmlRootElement
public class MyClass{
}
<小时/>
@GET
@Consumes("application/json")
public MyClass putJson(){
return new MyClass();
}

服务的客户端将看到一个表示该类的所有属性的 json。

PD:如果您有像 MessageBodyProviderNotFoundException 这样的异常,您需要添加 Genson在您的依赖项中。

关于java - Jersey 返回一个 JSONObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25631048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com