GsonBuilder setPrettyPrinting 打印不漂亮

问题描述 投票:0回答:3

我正在使用以下代码(在此网页上找到)和 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\"]}"

知道我做错了什么吗?

gson
3个回答
7
投票

您必须解析 JSON,然后对解析后的 JSON 调用

gson.toJson()

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

您当前的代码只是告诉 GSON 将一些

String
转换为 JSON,其结果是相同的
String
.


7
投票

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"
    ]
}

0
投票

我知道我迟到了。但是

JsonParser.parse()
已从 com.google.code.gson v2.8.6

弃用

而是使用静态方法

parseString​(String json)

 public String formatFormat(String source) {
    JsonElement jsonElement = JsonParser.parseString(source);
    Gson gson = new GsonBuilder().setPrettyPrinting().create();
    return gson.toJson(jsonElement);
 }

导入声明:

import com.google.gson.*;

如果您的输入源类型不同于字符串,您也可以使用像

parseReader​(JsonReader reader)
parseReader​(java.io.Reader reader)
这样的静态方法。

© www.soinside.com 2019 - 2024. All rights reserved.