Stéphane Piette Stéphane Piette - 1 year ago 70
Java Question

GSON - Custom serializer in specific case

I have this schema :

public class Student {
public String name;
public School school;

public class School {
public int id;
public String name;
public class Data {
public ArrayList<Student> students;
public ArrayList<School> schools;

I would like to serialize the Data object with Gson, and get something like :

{ "students": [{
"school": "1" //the id of the scool, not its entire Json
"school": [{ //the entire JSON
"id" : "1",
"name": "schoolName"

To make that, I must use custom serializer for the student part, so that Gson only print the id of the School. But for the School, I have to have nomal serializer.

How can I do everything with only one Gson object ?

Answer Source

You can write a custom serializer something like this:

public class StudentAdapter implements JsonSerializer<Student> {

 public JsonElement serialize(Student src, Type typeOfSrc,
            JsonSerializationContext context)

        JsonObject obj = new JsonObject();

        return obj;