我正在使用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 }"
这里发生的事情很明显是字符串被转义了。相反,我想要原始字符串,但保持相同的内容类型。
答案 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();
}