繁体   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