我正在使用以下代码(在此网页上找到)和 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\"]}"
知道我做错了什么吗?
您必须解析 JSON,然后对解析后的 JSON 调用
gson.toJson()
。
JsonElement jsonElement = new JsonParser().parse(jsonData);
String json = gson.toJson(jsonElement);
您当前的代码只是告诉 GSON 将一些
String
转换为 JSON,其结果是相同的String
.
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"
]
}
我知道我迟到了。但是
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)
这样的静态方法。