GsonBuilder setPrettyPrinting并不打印漂亮

时间:2017-11-16 18:57:03

标签: gson

我使用以下代码(found on this webpage)和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);
    }
}

这是预期的结果:

{
  "name": "mkyong",
  "age": 35,
  "position": "Founder",
  "salary": 10000,
  "skills": [
    "java",
    "python",
    "shell"
  ]
}

不幸的是"漂亮的印刷"根本不工作,我把所有东西都放在一行:

{\"name\":\"mkyong\",\"age\":35,\"position\":\"Founder\",\"salary\":10000,\"skills\":[\"java\",\"python\",\"shell\"]}"

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:2)

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

JsonElement jsonElement = new JsonParser().parse(jsonData);
String json = gson.toJson(jsonElement);

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

答案 1 :(得分:0)

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);
    }
}

输出:

{
  "name": "mkyong",
  "age": 35,
  "position": "Founder",
  "salary": 10000,
  "skills": [
    "java",
    "python",
    "shell"
  ]
}
相关问题