GsonBuilder setPrettyPrinting打印效果不佳

b91juud3  于 2022-11-23  发布在  其他
关注(0)|答案(3)|浏览(198)

我使用下面的代码(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\"]}"

知道我做错了什么吗

lvmkulzt

lvmkulzt1#

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

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

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

xmq68pz9

xmq68pz92#

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

mlmc2os53#

我知道我迟到了。但是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.*;
如果输入源类型与string不同,也可以使用静态方法,如parseReader​(JsonReader reader)parseReader​(java.io.Reader reader)

相关问题