English 中文(简体)
GSON - 特定情况下的习俗序列剂
原标题:GSON - Custom serializer in specific case

我有这个图象:

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;
}

我愿将数据标同Gson编成序列,并取得以下内容:

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

为此,我必须使用学生的定制序列器,以便Gson只印刷学校的id。 但对于学校而言,我必须拥有正式的序列仪。

我怎么能与只有一个Gson物体做任何事?

最佳回答

You can write a custom serializer something like this:

public class StudentAdapter implements JsonSerializer<Student> {

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

        JsonObject obj = new JsonObject();
        obj.addProperty("name", src.name);
        obj.addProperty("school", src.school.id);

        return obj;
    }
}
问题回答

当然,在你打算把这个目标编成序列的地方,你需要把这个目标添加到Gson上:

Gson gson = new GsonBuilder()
    .registerTypeAdapter(Student.class, new StudentAdapter())
    .create();
return gson.toJson([YOUR_OBJECT_TO_BE_SERIALIZED]);




相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签