Custom Deserializer
Google-gson is a java library from Google for encoding and decoding JSON text.
Get the latest binaries from
http://code.google.com/p/google-gson/ .
The following example shows registering a custom deserializer for a specific type.
package com.bethecoder.tutorials.google_gson.common;
import java.util.Date;
public class Student3 {
private String firstName;
private String lastName;
private int age;
private String hobby;
private Date dob;
private Password password;
public Student3 ( String firstName, String lastName, int age, String hobby,
Date dob ) {
super () ;
this .firstName = firstName;
this .lastName = lastName;
this .age = age;
this .hobby = hobby;
this .dob = dob;
}
public String getFirstName () {
return firstName;
}
public void setFirstName ( String firstName ) {
this .firstName = firstName;
}
public String getLastName () {
return lastName;
}
public void setLastName ( String lastName ) {
this .lastName = lastName;
}
public int getAge () {
return age;
}
public void setAge ( int age ) {
this .age = age;
}
public String getHobby () {
return hobby;
}
public void setHobby ( String hobby ) {
this .hobby = hobby;
}
public Date getDob () {
return dob;
}
public void setDob ( Date dob ) {
this .dob = dob;
}
public Password getPassword () {
return password;
}
public void setPassword ( Password password ) {
this .password = password;
}
public String toString () {
return "Student[ " +
"firstName = " + firstName +
", lastName = " + lastName +
", age = " + age +
", hobby = " + hobby +
", dob = " + dob +
" ]" ;
}
}
package com.bethecoder.tutorials.google_gson.common;
public class Password {
private String password;
public Password ( String password ) {
super () ;
this .password = password;
}
public String getPassword () {
return password;
}
public void setPassword ( String password ) {
this .password = password;
}
}
package com.bethecoder.tutorials.google_gson.tests;
import java.lang.reflect.Type;
import com.bethecoder.tutorials.google_gson.common.Password;
import com.bethecoder.tutorials.google_gson.common.Student3;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
public class CustomDeSerializerTest {
/**
* @param args
*/
public static void main ( String [] args ) {
Gson gson = new GsonBuilder ()
.registerTypeAdapter ( Password.class, new PasswordDeserializer ()) //Register a custom
.setPrettyPrinting () .create () ; //deserializer for Password type.
String jsonStr =
"{" +
"\"firstName\": \"Sriram\"," +
"\"lastName\": \"Kasireddi\"," +
"\"age\": 2," +
"\"hobby\": \"Singing\"," +
"\"dob\": \"May 6, 2010 12:00:00 AM\"," +
"\"password\": \"gfedcba\"" +
"}" ;
Student3 stud = gson.fromJson ( jsonStr, Student3. class ) ;
System.out.println ( stud.getPassword () .getPassword ()) ;
}
}
class PasswordDeserializer implements JsonDeserializer<Password> {
@Override
public Password deserialize ( JsonElement json, Type typeOfT,
JsonDeserializationContext context ) throws JsonParseException {
String ecryptedPwd = json.getAsString () ;
return new Password ( new StringBuffer ( ecryptedPwd ) .reverse () .toString ()) ;
}
}
It gives the following output,
abcdefg