GsonBuilder setPrettyPrinting 打印不漂亮

1pa*_*ger 7 gson

我正在使用以下代码(可在此网页上找到)和 Gson 库 (2.8.2) 使用漂亮的打印格式来格式化 JSON 代码。

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class GsonExample {
    public static void main(String[] args) {
      String jsonData = "{\"name\":\"mkyong\",\"age\":35,\"position\":\"Founder\",\"salary\":10000,\"skills\":[\"java\",\"python\",\"shell\"]}";

      Gson gson = new GsonBuilder().setPrettyPrinting().create();
      String json = gson.toJson(jsonData);

      System.out.println(json);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是预期的结果:

{
  "name": "mkyong",
  "age": 35,
  "position": "Founder",
  "salary": 10000,
  "skills": [
    "java",
    "python",
    "shell"
  ]
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,“漂亮的打印”根本不起作用,我将所有内容都放在一行中:

{\"name\":\"mkyong\",\"age\":35,\"position\":\"Founder\",\"salary\":10000,\"skills\":[\"java\",\"python\",\"shell\"]}"
Run Code Online (Sandbox Code Playgroud)

任何想法我做错了什么?

1pa*_*ger 8

nickb 让我很开心!:-)

正确的代码必须如下所示:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonParser;
import com.google.gson.JsonElement;

public class GsonExample {
    public static void main(String[] args) {
        String jsonData = "{\"name\":\"mkyong\",\"age\":35,\"position\":\"Founder\",\"salary\":10000,\"skills\":[\"java\",\"python\",\"shell\"]}";
        JsonElement jsonElement = new JsonParser().parse(jsonData);

        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        String json = gson.toJson(jsonElement);

        System.out.println(json);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

{
    "name": "mkyong",
    "age": 35,
    "position": "Founder",
    "salary": 10000,
    "skills": [
        "java",
        "python",
        "shell"
    ]
}
Run Code Online (Sandbox Code Playgroud)


nic*_*ckb 6

您必须解析 JSON,然后调用gson.toJson()生成的解析 JSON。

JsonElement jsonElement = new JsonParser().parse(jsonData);
String json = gson.toJson(jsonElement);
Run Code Online (Sandbox Code Playgroud)

您当前的代码只是告诉 GSON 将一些转换String为 JSON,结果是相同的String

  • 我的 json 数据已被解析为“JsonObject”。但打印起来仍然不太漂亮。 (2认同)