[英]How to create an object factory method for gson method?
我正在從JSON對象生成一個Student對象,但是問題是當我創建該對象時,我也想更新其“ studentClass”字段。 我更新了setStudentClass()方法,但我認為GSON不使用此setter字段。 如何為fromJson()方法創建工廠方法?
Student student = gson.fromJson(studentJSON.toString(), Student.class);
student.updateClassInfo();
public class Student{
private String name;
private String studentClass;
//getters and setters
public void updateClassInfo(){
if(studentClass.equals("1"))
studentClass = "starter";
else if
.....
}
}
使用自定義解串器可以滿足此要求。 下面的示例代碼:-
主要方法:-
public static void main(String[] args) {
String jsonString = "{\"name\":\"John\",\"studentClass\":\"1\"}";
//String jsonString = "{\"name\":\"John\"}";
Gson gson = new GsonBuilder()
.registerTypeAdapter(Student.class, new StudentModelDeserializer())
.create();
Student student = gson.fromJson(jsonString, Student.class);
System.out.println(student.toString());
}
解串器:
public class StudentModelDeserializer implements JsonDeserializer<Student> {
@Override
public Student deserialize(JsonElement paramJsonElement, Type paramType,
JsonDeserializationContext paramJsonDeserializationContext) throws JsonParseException {
String studentClass = null;
if (paramJsonElement.getAsJsonObject().get("studentClass") != null) {
studentClass = paramJsonElement.getAsJsonObject().get("studentClass").getAsString();
}
Student student = new Gson().fromJson(paramJsonElement.getAsJsonObject(), Student.class);
if (studentClass != null) {
if (studentClass.equals("1")) {
student.setStudentClass("starter");
}
}
return student;
}
}
輸出:-
Student [name=John, studentClass=starter]
如果沒有學生班級,則輸出:
Student [name=John, studentClass=null]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.