簡體   English   中英

GSON Java Object 序列化

[英]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 創建 Json class
  • student創建 json Object 。
  • 使用字符串編寫students JsonElement。
  • 把學生放在 studentJosn Object
  • 將學生jsonObject放入class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM