我使用以下代码(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\"]}"
任何想法我做错了什么?
答案 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"
]
}