将javax.ws.rs实体序列化为json

将javax.ws.rs实体序列化为json,第1张

将javax.ws.rs实体序列化为json

你不能像这样测试。你在这里做什么

Response response = Response.status(Response.Status.OK)      .entity(entity)      .type(MediaType.APPLICATION_JSON).build();

正在建立 出站 响应。在JAX-RS框架中,发出响应后,例如

@GET@Produced(MediaType.APPLICATION_JSON)public Response getResponse() {    ...    return Response.status(Response.Status.OK)         .entity(entity)         .type(MediaType.APPLICATION_JSON).build();}

它仍然需要通过

MessageBodyWriter
序列化到JSON。

  • 阅读有关实体提供者的更多信息

话虽如此,泽西岛有一个测试框架,我们可以用来测试我们的资源方法。您可以在Github上找到所有官方示例

一个样本(有一些改动):

这些是最低要求的Maven依赖项

<dependencies>    <dependency>        <groupId>org.glassfish.jersey.test-framework</groupId>        <artifactId>jersey-test-framework-core</artifactId>        <version>2.13</version>    </dependency>    <dependency>        <groupId>org.glassfish.jersey.test-framework.providers</groupId>        <artifactId>jersey-test-framework-provider-grizzly2</artifactId>        <version>2.13</version>    </dependency>    <dependency>        <groupId>org.glassfish.jersey.media</groupId>        <artifactId>jersey-media-json-jackson</artifactId>        <version>2.13</version>    </dependency></dependencies>

测试班

public class TestJSonResource extends JerseyTest {    @Override    protected TestContainerFactory getTestContainerFactory() {        return new GrizzlyTestContainerFactory();    }    @Path("test")    public static class TestResource {        @GET        @Produces(MediaType.APPLICATION_JSON)        public Response getJson() { Map<String, String> entity = Maps.newHashMap(); entity.put("foo", "bar"); Response response = Response.status(Response.Status.OK)         .entity(entity)         .type(MediaType.APPLICATION_JSON).build(); return response;        }    }    @Override    protected DeploymentContext configureDeployment() {        return DeploymentContext.builder(new ResourceConfig(TestResource.class))     .contextPath("context1/context2")     .build();    }    @Test    public void testGet() {        final WebTarget target = target("test");        final String s = target.request().get(String.class);        System.out.println(s);    }}

jersey-media-json-jackson
提供
MessageBodyWriter
MessageBodyReader
用于处理JSON,这对我们是隐式注册的。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5462071.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存