当我在网上查看时,我在 Gson 中创建的 Json 会显示为一行

Leo*_*uez 1 java mysql rest gson jakarta-ee

我正在使用 java、MySQ、Jersey 和 Gson 创建 RESTful Web 服务。它可以工作,但我唯一的问题是当我在服务器上运行它并转到我的项目的本地主机站点时,JSON 全部在一行中。

这是 Web 上 JSON 的输出。

 "[\n{\n\"id\":5,\n\"subject\":\"Math\",\n\"subjectAcronym\":\"MT\",\n\"classNumber\":2550,\n\"className\":\"Linear Algebra\",\n\"unit\": 3,\n\"prerequisite\":true,\n\"corequisite\":false\n}\n]"
Run Code Online (Sandbox Code Playgroud)

这是代码中的类。

@GET
@Path("/Classes")
@Produces("application/json")
public String feed() {
    String feeds = null;
    try {
        ArrayList<ClassList> feedData = null;
        ClassManager projectManager = new ClassManager();
        feedData = projectManager.GetFeeds();
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        System.out.println(gson.toJson(feedData));
        feeds = gson.toJson(feedData);
    }

    catch (Exception e) {
        System.out.println("Exception Error"); // Console
    }
    return feeds;
}
Run Code Online (Sandbox Code Playgroud)

代码中的内容GsonBuilder().setPrettyPrinting()以我希望在网络上打印的方式在控制台中打印出来。

eclipse控制台的输出。

[     
   {
     "id": 5,
     "subject": "Math",
     "subjectAcronym": "MT",
     "classNumber": 2550,
     "className": "Linear Algebra",
     "unit": 3,
     "prerequisite": true,
     "corequisite": false
  }
]
Run Code Online (Sandbox Code Playgroud)

我还有 2 个与此类似的类,并且所有类在网络上显示相同(在一行中)。如何使网络上的显示像控制台中的输出一样?任何回应都是有帮助的。谢谢。

Ste*_*ery 5

那是因为你的 JSON 是一个字符串,因为你将 GsonBuilder 设置为漂亮的打印,这会添加换行符和格式等。您希望编写不带格式的 JSON,因此它是 JSON 而不是字符串。如果您愿意,您还可以漂亮地打印。我相信这会解决您的问题:

@GET
@Path("/Classes")
@Produces("application/json")
public String feed() {
    String feeds = null;
    try {
        ArrayList<ClassList> feedData = null;
        ClassManager projectManager = new ClassManager();
        feedData = projectManager.GetFeeds();
        Gson gson_pretty = new GsonBuilder().setPrettyPrinting().create();
        Gson gson = new Gson();
        System.out.println(gson_pretty.toJson(feedData));
        feeds = gson.toJson(feedData);
    }

    catch (Exception e) {
        System.out.println("Exception Error"); // Console
    }
    return feeds;
}
Run Code Online (Sandbox Code Playgroud)

请注意,在 Google Chrome 上,JSON 在一行中表示。是改变这一点的扩展。Firefox 默认显示 JSON,如下所示:

漂亮的 JSON