[英]GSON Java Object Serialization
我正在將 object 寫入 JSON 文件。 想知道如何在 object 中添加父元素或僅在 JSON 文件中添加父元素。
public void writeToJSON(Path dest, Student studentJSON) throws IOException {
Gson gson = new GsonBuilder().serializeNulls().setPrettyPrinting().create();
try (PrintWriter wr = new PrintWriter(Files.newBufferedWriter(dest))) {
gson.toJson(studentJSON, wr);
}
這會在 Json 中生成學生列表
{
"students": [
{
"Name": "foo",
"Grade": "A"
},
{
"Name": "bar",
"Grade": "B+",
}
]
}
我正在尋找這樣的 JSON:
{
"class" : {
"students": [
{
"Name": "foo",
"Grade": "A"
},
{
"Name": "bar",
"Grade": "B+",
}
]
}
}
我不想為此創建一個額外的 class 。 知道如何更改我的寫入 function 或者 GSON 是否為此提供任何屬性?
你必須修改你的方法看起來像這樣
public static void writeToJSON(Path dest, List<Student> studentJSON) throws IOException {
Gson gson = new GsonBuilder().serializeNulls().setPrettyPrinting().create();
try (PrintWriter wr = new PrintWriter(Files.newBufferedWriter(dest))) {
JsonElement jsonElement = gson.toJsonTree(studentJSON);
JsonObject classObject = new JsonObject();
JsonObject studentsObject = new JsonObject();
studentsObject.add("students", jsonElement);
classObject.add("class", studentsObject);
gson.toJson(classObject, wr);
}
}
學生POJO class
class Student {
public Student(String name, String grade) {
this.name = name;
this.grade = grade;
}
@SerializedName("Name")
String name;
@SerializedName("Grade")
String grade;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
}
這就是你如何 class 它
List<Student> students = new ArrayList<>();
students.add(new Student("silentsudo", "A+"));
students.add(new Student("random", "C+"));
writeToJSON(Paths.get("/home/usertest.json"), students);
解釋:
class
。student
創建 json Object 。students
JsonElement。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.