我有一个情况,我想使用GSON自定义序列化功能。如何使用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'](http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonWriter .html),尽管说实话我不知道你为什么要生成语法错误的数据。 – Perception 2013-05-09 13:32:05
@Perception是否因重复键“学生”而无效?或者其他原因? – Sam 2013-05-09 13:42:36
这是无效的,因为你的JSON数组中的对象没有用大括号正确包围。您可以随时使用在线工具检查数据的有效性,如[jsonlint](http://jsonlint.com) – Perception 2013-05-09 13:46:11