JAX-RS响应为字符串生成转义的JSON

时间:2014-07-15 21:06:59

标签: json jax-rs

我正在使用JAX-RS来制作网络服务。对于这部分Web服务,我有一个JSON字符串,我需要发送给用户,但问题是JAX-RS在发送之前转义字符串。这是具体问题。

服务如下:

@GET
@Produces("application/json")
public String serializeConfiguration() {
    return exportConfiguration();
}

用户转到http://mycompany.com/export-configuration

用户需要回复:

{
  "myconfig" : "some stuff"
}

但是得到:

"{\n      \"myconfig\" : \"some stuff\"\n    }"

这里发生的事情很明显是字符串被转义了。相反,我想要原始字符串,但保持相同的内容类型。

2 个答案:

答案 0 :(得分:1)

如果您已经将JSON作为String,那么如果您使用此实体创建响应,它应该可以工作:

@GET
@Produces(MediaType.APPLICATION_JSON)
public Response config() {
    return Response.ok(exportConfiguration()).build();
}

答案 1 :(得分:0)

要回答我自己的问题,看起来我需要直接写入响应对象。像这样:

@GET
public void serializeConfiguration(@Context HttpServletResponse response) throws IOException {
    response.setContentType(MediaType.APPLICATION_JSON);
    response.setStatus(200);
    response.setCharacterEncoding(Charsets.UTF_8.name());
    response.getWriter().write(exportConfiguration());
    response.getWriter().close();
}