使用jersey和grizzly启用JSON [英] Enabling JSON using jersey and grizzly

查看:171
本文介绍了使用jersey和grizzly启用JSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在与Grizzly托管的Jersey一起玩,并且希望能够使用和产生JSON,但是我在POST中不支持的get request和media type中从服务器获取500 我的服务器代码是

I am playing with Jersey hosted with Grizzly and want to be able to consume and produce JSON, however I am getting 500 from the server in get request and media type unsupported in POST my server code is

org.glassfish.jersey.server.ResourceConfig rc = new ResourceConfig();
    rc.packages("RestServer.controllers");

    final Map<String, Object> initParams = new HashMap<String, Object>();
    initParams.put("com.sun.jersey.config.property.packages", "rest");
    initParams.put("com.sun.jersey.api.json.POJOMappingFeature", "true");

    rc.addProperties(initParams);

    webServer = GrizzlyHttpServerFactory.createHttpServer(uri, rc, false);

我的POJO是:

@XmlRootElement
public class Dummy {

    private int id;
    private String name;

    public Dummy(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @XmlElement(name="id")
    public int getId() {
        return id;
    }

    @XmlElement(name = "name")
    public String getName() {
        return name;
    }
}

和控制器

@Path("/Dummies")
public class DummyController {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response get() {
        System.out.println("Get");
        return Response.status(Status.OK)
            .entity(new Dummy(-1, "hello"))
            .build();
    }

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public Response AddDummy(Dummy dummy) {
        return Response.status(Status.CREATED).entity(dummy).build();
    }
}

推荐答案

您正在使用Jersey2.在Jersey 2中,没有 com.sun.jersey.api.json.POJOMappingFeaturecom.sun.jersey.config.property.packages,因此您可以获得摆脱那些.

You're using Jersey 2. In Jersey 2, there is no com.sun.jersey.api.json.POJOMappingFeature and com.sun.jersey.config.property.packages, so you can get rid of those.

要启用往返于POJO的JSON,我们需要一个MessageBodyWriter/MessageBodyReader(请参见此处).

To enable JSON to/from POJO, we need a MessageBodyWriter/MessageBodyReader(see more here). Fortunately, we don't need to write these ourselves. You just need a dependency (see here).

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>${jersey2.version}</version>
</dependency>

此行为将引入所需的Jackson MessageBodyReader/MessageBodyWriter.然后只需对其进行配置

This depedency will pull in the required Jackson MessageBodyReader/MessageBodyWriter. Then just configure it

resourceConfig.register(JacksonFeature.class);

这篇关于使用jersey和grizzly启用JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆