Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jersey 我可以在RESTful中获得作为json对象的普通pojo吗_Jersey - Fatal编程技术网

Jersey 我可以在RESTful中获得作为json对象的普通pojo吗

Jersey 我可以在RESTful中获得作为json对象的普通pojo吗,jersey,Jersey,我正在实现jersey restful web服务,以从JavaBean类获取application/json mime类型。下面给出的是资源类代码 @GET @Produces({"application/json"}) public synchronized Flights getFlightList() { return myFlights; } 这里,如果返回对象Flight仅在Flight使用jaxb编码时转换为json对象。对于普通的

我正在实现jersey restful web服务,以从JavaBean类获取application/json mime类型。下面给出的是资源类代码

    @GET
    @Produces({"application/json"})
    public synchronized Flights getFlightList() {
        return myFlights;
    }
这里,如果返回对象Flight仅在Flight使用jaxb编码时转换为json对象。对于普通的POJO类,它不返回任何内容,而是出现Http错误“500”


您能告诉我是否可以发送json格式的普通JavaBean对象吗?如果是,那么请告诉我如何获得它

您可以查看以下示例以获取指导:

同时阅读文档以获得更多知识:
默认注册的JSON序列化提供程序使用与JAXB相同的注释工作,JAXB本身处理XML序列化。这通常是一个优势,因为这意味着您只需要在其上放置一组注释,当然不必自己编写任何直接序列化代码

但您可以自己做更多的序列化工作

@产品应用程序/json @提供者 公共类FlightsWriter实现MessageBodyWriter{ 公共布尔值isWriteableClass类型,类型genericType, 注释[]注释,MediaType MediaType{ 返回类型instanceof Flights;//可能最简单 } 公共长途航班, 类类型,类型genericType, 注释[]注释,MediaType MediaType{ return-1;//如果可以的话,也可以是实际大小! } 公共航班, 类类型,类型genericType, 注释[]注释,MediaType MediaType, 多值MAP HttpHeader, OutputStream entityStream引发IOException, WebApplicationException{ //把你的代码写在这里。。。 } }
请注意,这是很多工作的原因,这也是大多数人使用内置引擎并添加JAXB注释的原因。

如果使用servlet,请在web.xml文件中将POJOMappingFeature设置为true,POJO转换将自动完成

<servlet>
    <servlet-name>Jersey</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>my.package.name</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>
</servlet>

有趣的是,当我在NetBeans中运行代码时,我不必设置这个init参数。但当我将战争部署到GlassFish时,没有init parm它就失败了。