У меня есть случай, когда я хотел бы использовать специальную функцию сериализации 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?
Я пробовал this и this. Но это не помогло.
Ваш желаемый результат недействителен JSON. Если вы настаиваете на его создании, вы можете сделать это с помощью ['JSONWriter'] (http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonWriter .html), хотя, честно говоря, я не знаю, почему вы хотите генерировать синтаксически неверные данные. – Perception
@Перцепция Is недействительна из-за дублирования ключей «ученик»? Или любая другая причина? – Sam
Недопустимо, потому что объекты в вашем массиве JSON неправильно окружены фигурными скобками. Вы всегда можете проверить правильность своих данных с помощью онлайн-инструментов, таких как [jsonlint] (http://jsonlint.com). – Perception