gpt4 book ai didi

java - JBoss RESTful 服务中的 pretty-print JSON 输出

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:09 24 4
gpt4 key购买 nike

我遇到过“最佳实践”网站,这些网站提到您应该从 RESTful 网络服务中漂亮地打印 JSON 输出。我找到了很多关于如何在一般情况下漂亮地打印 JSON 的资源,但是当我让 JBoss(和 RESTEasy)在幕后输出我的 JSON 时,我不知道有什么方法可以调整它的服务。

我的代码看起来像这样:

@GET
@Path("books")
@Produces({ MediaType.APPLICATION_JSON })
public Book getBooks() {
return doGetBooks();
}

JBoss 处理请求并构建 JSON 很好,但它是压缩的。我还没有找到任何方法告诉 JBoss 漂亮地打印它,以便它在浏览器等中更易于阅读。我找到了一些文档,介绍如何漂亮地打印从 JBoss 提供的 XML,而不是 JSON。

谢谢大家!

最佳答案

我有一些关于解决方案的循环,可以很好地打印它。 (不是最好的 Pretty Print 但足够了)

您需要 Maven 的以下内容:

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>

然后你可以把你的方法改成这样:

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.ObjectWriter;

...

private final ObjectWriter WRITER = new ObjectMapper().writerWithDefaultPrettyPrinter();

...

@GET
@Path("books")
@Produces({ MediaType.APPLICATION_JSON })
public Response getBooks() {
return Response.status(Status.OK).entity(WRITER.writeValueAsString(doGetBooks())).build();
}

因为它的作用是:

  1. 将您的对象转换为漂亮的 JSON 字符串
  2. 返回一个 Response 对象,带有 200 响应代码和 JSON 字符串

编辑:通过添加像 pretty=true 这样的查询参数来使它可用可能是明智的,因为它会增加你的响应输出大小。

你也可以看看这个:http://docs.jboss.org/resteasy/2.0.0.GA/userguide/html/Built_in_JAXB_providers.html#decorators它描述了创建一个 XML 装饰器,您可以对其进行调整以适应 JSON 以仍然返回对象并将其置于幕后。 (我稍后会尝试摆弄这个)

关于java - JBoss RESTful 服务中的 pretty-print JSON 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20083691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com