[英]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.