【发布时间】:2013-05-09 12:43:10
【问题描述】:
我有一个案例,我想使用 GSON 自定义序列化功能。
class Student{
public String name;
public int rollNumber;
public Student(String name, int rollNumber){
this.name = name;
this.rollNumber = rollNumber;
}
public int getRollNumber(){
return this.rollNumber;
}
public String getName(){
return this.name;
}
}
class School{
public Student[] students;
public School(Student[] students){
this.students = students;
}
public Students[] getStudents(){
return this.students;
}
}
当我这样做的时候
private static final Gson GSON = new GsonBuilder().disableHtmlEscaping().create();
Student[] students = new Student[2];
students[0] = new Student("sam", 1);
students[1] = new Student("tom", 2);
School school = new School(students);
GSON.toJson(school);
我得到这样的输出:
[{"name":"sam","rollNumer":1},{"name":"tom","rollNumer":2}]
但我希望它是:
["student":{"name":"sam","rollNumer":1},"student":{"name":"tom","rollNumer":2}]
如何使用 GSON 自定义序列化来实现这一点?
【问题讨论】:
-
您想要的输出不是有效的 JSON。如果您坚持生成它,那么您可以使用
JSONWriter来生成它,但老实说,我不知道您为什么要生成语法不正确的数据。 -
@Perception 是否因为重复键“学生”而无效?还是其他原因?
-
这是无效的,因为您的 JSON 数组中的对象没有正确地用大括号括起来。您可以随时使用jsonlint等在线工具检查数据的有效性