2008-09-01 05:13:32 +02:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
< HTML >
< HEAD >
2009-02-06 20:32:56 +01:00
<!-- Generated by javadoc (build 1.6.0_01) on Thu Feb 05 15:37:29 PST 2009 -->
< META http-equiv = "Content-Type" content = "text/html; charset=ISO-8859-1" >
2008-09-01 05:13:32 +02:00
< TITLE >
2009-02-06 20:32:56 +01:00
JsonDeserializer (Gson 1.3-b2 API)
2008-09-01 05:13:32 +02:00
< / TITLE >
2009-02-06 20:32:56 +01:00
< META NAME = "date" CONTENT = "2009-02-05" >
2008-09-01 05:13:32 +02:00
< LINK REL = "stylesheet" TYPE = "text/css" HREF = "../../../stylesheet.css" TITLE = "Style" >
< SCRIPT type = "text/javascript" >
function windowTitle()
{
2009-02-06 20:32:56 +01:00
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="JsonDeserializer (Gson 1.3-b2 API)";
}
2008-09-01 05:13:32 +02:00
}
< / SCRIPT >
< NOSCRIPT >
< / NOSCRIPT >
< / HEAD >
< BODY BGCOLOR = "white" onload = "windowTitle();" >
2009-02-06 20:32:56 +01:00
< HR >
2008-09-01 05:13:32 +02:00
<!-- ========= START OF TOP NAVBAR ======= -->
< A NAME = "navbar_top" > <!-- --> < / A >
< A HREF = "#skip-navbar_top" title = "Skip navigation links" > < / A >
< TABLE BORDER = "0" WIDTH = "100%" CELLPADDING = "1" CELLSPACING = "0" SUMMARY = "" >
< TR >
< TD COLSPAN = 2 BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" >
< A NAME = "navbar_top_firstrow" > <!-- --> < / A >
< TABLE BORDER = "0" CELLPADDING = "0" CELLSPACING = "3" SUMMARY = "" >
< TR ALIGN = "center" VALIGN = "top" >
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "../../../overview-summary.html" > < FONT CLASS = "NavBarFont1" > < B > Overview< / B > < / FONT > < / A > < / TD >
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "package-summary.html" > < FONT CLASS = "NavBarFont1" > < B > Package< / B > < / FONT > < / A > < / TD >
< TD BGCOLOR = "#FFFFFF" CLASS = "NavBarCell1Rev" > < FONT CLASS = "NavBarFont1Rev" > < B > Class< / B > < / FONT > < / TD >
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "class-use/JsonDeserializer.html" > < FONT CLASS = "NavBarFont1" > < B > Use< / B > < / FONT > < / A > < / TD >
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "package-tree.html" > < FONT CLASS = "NavBarFont1" > < B > Tree< / B > < / FONT > < / A > < / TD >
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "../../../deprecated-list.html" > < FONT CLASS = "NavBarFont1" > < B > Deprecated< / B > < / FONT > < / A > < / TD >
2009-02-06 20:32:56 +01:00
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "../../../index-all.html" > < FONT CLASS = "NavBarFont1" > < B > Index< / B > < / FONT > < / A > < / TD >
2008-09-01 05:13:32 +02:00
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "../../../help-doc.html" > < FONT CLASS = "NavBarFont1" > < B > Help< / B > < / FONT > < / A > < / TD >
< / TR >
< / TABLE >
< / TD >
< TD ALIGN = "right" VALIGN = "top" ROWSPAN = 3 > < EM >
< / EM >
< / TD >
< / TR >
< TR >
< TD BGCOLOR = "white" CLASS = "NavBarCell2" > < FONT SIZE = "-2" >
< A HREF = "../../../com/google/gson/JsonDeserializationContext.html" title = "interface in com.google.gson" > < B > PREV CLASS< / B > < / A >
< A HREF = "../../../com/google/gson/JsonElement.html" title = "class in com.google.gson" > < B > NEXT CLASS< / B > < / A > < / FONT > < / TD >
< TD BGCOLOR = "white" CLASS = "NavBarCell2" > < FONT SIZE = "-2" >
< A HREF = "../../../index.html?com/google/gson/JsonDeserializer.html" target = "_top" > < B > FRAMES< / B > < / A >
< A HREF = "JsonDeserializer.html" target = "_top" > < B > NO FRAMES< / B > < / A >
< SCRIPT type = "text/javascript" >
<!--
if(window==top) {
document.writeln('< A HREF = "../../../allclasses-noframe.html" > < B > All Classes< / B > < / A > ');
}
//-->
< / SCRIPT >
< NOSCRIPT >
< A HREF = "../../../allclasses-noframe.html" > < B > All Classes< / B > < / A >
< / NOSCRIPT >
< / FONT > < / TD >
< / TR >
< TR >
< TD VALIGN = "top" CLASS = "NavBarCell3" > < FONT SIZE = "-2" >
SUMMARY: NESTED | FIELD | CONSTR | < A HREF = "#method_summary" > METHOD< / A > < / FONT > < / TD >
< TD VALIGN = "top" CLASS = "NavBarCell3" > < FONT SIZE = "-2" >
DETAIL: FIELD | CONSTR | < A HREF = "#method_detail" > METHOD< / A > < / FONT > < / TD >
< / TR >
< / TABLE >
< A NAME = "skip-navbar_top" > < / A >
<!-- ========= END OF TOP NAVBAR ========= -->
< HR >
<!-- ======== START OF CLASS DATA ======== -->
< H2 >
< FONT SIZE = "-1" >
com.google.gson< / FONT >
< BR >
Interface JsonDeserializer< T> < / H2 >
< DL >
< DT > < DT > < B > Type Parameters:< / B > < DD > < CODE > T< / CODE > - type for which the deserializer is being registered. It is possible that a
deserializer may be asked to deserialize a specific generic type of the T.< / DL >
< HR >
< DL >
< DT > < PRE > public interface < B > JsonDeserializer< T> < / B > < / DL >
< / PRE >
< P >
< p > Interface representing a custom deserializer for Json. You should write a custom
deserializer, if you are not happy with the default deserialization done by Gson. You will
also need to register this deserializer through
< A HREF = "../../../com/google/gson/GsonBuilder.html#registerTypeAdapter(java.lang.reflect.Type, java.lang.Object)" > < CODE > GsonBuilder.registerTypeAdapter(Type, Object)< / CODE > < / A > .< / p >
< p > Let us look at example where defining a deserializer will be useful. The < code > Id< / code > class
defined below has two fields: < code > clazz< / code > and < code > value< / code > .< / p >
< pre >
public class Id< T> {
private final Class< T> clazz;
private final long value;
public Id(Class< T> clazz, long value) {
this.clazz = clazz;
this.value = value;
}
public long getValue() {
return value;
}
}
< / pre >
< p > The default deserialization of < code > Id(com.foo.MyObject.class, 20L)< / code > will require the
Json string to be < code > {"clazz":com.foo.MyObject,"value":20}< / code > . Suppose, you already know
the type of the field that the < code > Id< / code > will be deserialized into, and hence just want to
deserialize it from a Json string < code > 20< / code > . You can achieve that by writing a custom
deserializer:< / p >
< pre >
class IdDeserializer implements JsonDeserializer< Id> () {
public Id fromJson(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
return (Id) new Id((Class)typeOfT, id.getValue());
}
< / pre >
< p > You will also need to register < code > IdDeserializer< / code > with Gson as follows:< / p >
< pre >
Gson gson = new GsonBuilder().registerTypeAdapter(Id.class, new IdDeserializer()).create();
< / pre >
< P >
< P >
< DL >
< DT > < B > Author:< / B > < / DT >
< DD > Inderjeet Singh, Joel Leitch< / DD >
< / DL >
< HR >
< P >
<!-- ========== METHOD SUMMARY =========== -->
< A NAME = "method_summary" > <!-- --> < / A >
< TABLE BORDER = "1" WIDTH = "100%" CELLPADDING = "3" CELLSPACING = "0" SUMMARY = "" >
< TR BGCOLOR = "#CCCCFF" CLASS = "TableHeadingColor" >
< TH ALIGN = "left" COLSPAN = "2" > < FONT SIZE = "+2" >
< B > Method Summary< / B > < / FONT > < / TH >
< / TR >
< TR BGCOLOR = "white" CLASS = "TableRowColor" >
< TD ALIGN = "right" VALIGN = "top" WIDTH = "1%" > < FONT SIZE = "-1" >
< CODE > < A HREF = "../../../com/google/gson/JsonDeserializer.html" title = "type parameter in JsonDeserializer" > T< / A > < / CODE > < / FONT > < / TD >
< TD > < CODE > < B > < A HREF = "../../../com/google/gson/JsonDeserializer.html#deserialize(com.google.gson.JsonElement, java.lang.reflect.Type, com.google.gson.JsonDeserializationContext)" > deserialize< / A > < / B > (< A HREF = "../../../com/google/gson/JsonElement.html" title = "class in com.google.gson" > JsonElement< / A > json,
2009-02-06 20:32:56 +01:00
< A HREF = "http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Type.html?is-external=true" title = "class or interface in java.lang.reflect" > Type< / A > typeOfT,
2008-09-01 05:13:32 +02:00
< A HREF = "../../../com/google/gson/JsonDeserializationContext.html" title = "interface in com.google.gson" > JsonDeserializationContext< / A > context)< / CODE >
< BR >
Gson invokes this call-back method during deserialization when it encounters a field of the
specified type.< / TD >
< / TR >
< / TABLE >
< P >
<!-- ============ METHOD DETAIL ========== -->
< A NAME = "method_detail" > <!-- --> < / A >
< TABLE BORDER = "1" WIDTH = "100%" CELLPADDING = "3" CELLSPACING = "0" SUMMARY = "" >
< TR BGCOLOR = "#CCCCFF" CLASS = "TableHeadingColor" >
< TH ALIGN = "left" COLSPAN = "1" > < FONT SIZE = "+2" >
< B > Method Detail< / B > < / FONT > < / TH >
< / TR >
< / TABLE >
< A NAME = "deserialize(com.google.gson.JsonElement, java.lang.reflect.Type, com.google.gson.JsonDeserializationContext)" > <!-- --> < / A > < H3 >
deserialize< / H3 >
< PRE >
< A HREF = "../../../com/google/gson/JsonDeserializer.html" title = "type parameter in JsonDeserializer" > T< / A > < B > deserialize< / B > (< A HREF = "../../../com/google/gson/JsonElement.html" title = "class in com.google.gson" > JsonElement< / A > json,
2009-02-06 20:32:56 +01:00
< A HREF = "http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Type.html?is-external=true" title = "class or interface in java.lang.reflect" > Type< / A > typeOfT,
2008-09-01 05:13:32 +02:00
< A HREF = "../../../com/google/gson/JsonDeserializationContext.html" title = "interface in com.google.gson" > JsonDeserializationContext< / A > context)
throws < A HREF = "../../../com/google/gson/JsonParseException.html" title = "class in com.google.gson" > JsonParseException< / A > < / PRE >
< DL >
< DD > Gson invokes this call-back method during deserialization when it encounters a field of the
specified type.
< p > In the implementation of this call-back method, you should consider invoking
< A HREF = "../../../com/google/gson/JsonDeserializationContext.html#deserialize(com.google.gson.JsonElement, java.lang.reflect.Type)" > < CODE > JsonDeserializationContext.deserialize(JsonElement, Type)< / CODE > < / A > method to create objects
for any non-trivial field of the returned object. However, you should never invoke it on the
the same type passing < code > json< / code > since that will cause an infinite loop (Gson will call your
call-back method again).
< P >
< DD > < DL >
< DT > < B > Parameters:< / B > < DD > < CODE > json< / CODE > - The Json data being deserialized< DD > < CODE > typeOfT< / CODE > - The type of the Object to deserialize to
< DT > < B > Returns:< / B > < DD > a deserialized object of the specified type typeOfT which is a subclass of < code > T< / code >
< DT > < B > Throws:< / B >
< DD > < CODE > < A HREF = "../../../com/google/gson/JsonParseException.html" title = "class in com.google.gson" > JsonParseException< / A > < / CODE > - if json is not in the expected format of < code > typeofT< / code > < / DL >
< / DD >
< / DL >
<!-- ========= END OF CLASS DATA ========= -->
< HR >
<!-- ======= START OF BOTTOM NAVBAR ====== -->
< A NAME = "navbar_bottom" > <!-- --> < / A >
< A HREF = "#skip-navbar_bottom" title = "Skip navigation links" > < / A >
< TABLE BORDER = "0" WIDTH = "100%" CELLPADDING = "1" CELLSPACING = "0" SUMMARY = "" >
< TR >
< TD COLSPAN = 2 BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" >
< A NAME = "navbar_bottom_firstrow" > <!-- --> < / A >
< TABLE BORDER = "0" CELLPADDING = "0" CELLSPACING = "3" SUMMARY = "" >
< TR ALIGN = "center" VALIGN = "top" >
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "../../../overview-summary.html" > < FONT CLASS = "NavBarFont1" > < B > Overview< / B > < / FONT > < / A > < / TD >
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "package-summary.html" > < FONT CLASS = "NavBarFont1" > < B > Package< / B > < / FONT > < / A > < / TD >
< TD BGCOLOR = "#FFFFFF" CLASS = "NavBarCell1Rev" > < FONT CLASS = "NavBarFont1Rev" > < B > Class< / B > < / FONT > < / TD >
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "class-use/JsonDeserializer.html" > < FONT CLASS = "NavBarFont1" > < B > Use< / B > < / FONT > < / A > < / TD >
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "package-tree.html" > < FONT CLASS = "NavBarFont1" > < B > Tree< / B > < / FONT > < / A > < / TD >
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "../../../deprecated-list.html" > < FONT CLASS = "NavBarFont1" > < B > Deprecated< / B > < / FONT > < / A > < / TD >
2009-02-06 20:32:56 +01:00
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "../../../index-all.html" > < FONT CLASS = "NavBarFont1" > < B > Index< / B > < / FONT > < / A > < / TD >
2008-09-01 05:13:32 +02:00
< TD BGCOLOR = "#EEEEFF" CLASS = "NavBarCell1" > < A HREF = "../../../help-doc.html" > < FONT CLASS = "NavBarFont1" > < B > Help< / B > < / FONT > < / A > < / TD >
< / TR >
< / TABLE >
< / TD >
< TD ALIGN = "right" VALIGN = "top" ROWSPAN = 3 > < EM >
< / EM >
< / TD >
< / TR >
< TR >
< TD BGCOLOR = "white" CLASS = "NavBarCell2" > < FONT SIZE = "-2" >
< A HREF = "../../../com/google/gson/JsonDeserializationContext.html" title = "interface in com.google.gson" > < B > PREV CLASS< / B > < / A >
< A HREF = "../../../com/google/gson/JsonElement.html" title = "class in com.google.gson" > < B > NEXT CLASS< / B > < / A > < / FONT > < / TD >
< TD BGCOLOR = "white" CLASS = "NavBarCell2" > < FONT SIZE = "-2" >
< A HREF = "../../../index.html?com/google/gson/JsonDeserializer.html" target = "_top" > < B > FRAMES< / B > < / A >
< A HREF = "JsonDeserializer.html" target = "_top" > < B > NO FRAMES< / B > < / A >
< SCRIPT type = "text/javascript" >
<!--
if(window==top) {
document.writeln('< A HREF = "../../../allclasses-noframe.html" > < B > All Classes< / B > < / A > ');
}
//-->
< / SCRIPT >
< NOSCRIPT >
< A HREF = "../../../allclasses-noframe.html" > < B > All Classes< / B > < / A >
< / NOSCRIPT >
< / FONT > < / TD >
< / TR >
< TR >
< TD VALIGN = "top" CLASS = "NavBarCell3" > < FONT SIZE = "-2" >
SUMMARY: NESTED | FIELD | CONSTR | < A HREF = "#method_summary" > METHOD< / A > < / FONT > < / TD >
< TD VALIGN = "top" CLASS = "NavBarCell3" > < FONT SIZE = "-2" >
DETAIL: FIELD | CONSTR | < A HREF = "#method_detail" > METHOD< / A > < / FONT > < / TD >
< / TR >
< / TABLE >
< A NAME = "skip-navbar_bottom" > < / A >
<!-- ======== END OF BOTTOM NAVBAR ======= -->
< HR >
2009-02-06 20:32:56 +01:00
Copyright © 2008-2009. All Rights Reserved.
2008-09-01 05:13:32 +02:00
< / BODY >
< / HTML >