android - Gson Map Key Pair to json -
i want parse json this:
map<pair<string, date>, product>
since json cannot have pair has key gives me this:
{"android.util.pair@a24f8432":{"name:"name","brand":"brand"....}}
at point achieve goal i'll have create pair<string, date>
object serialize , deserialize methods.
this need help, have no idea how this. have create mypair
class extending pair
, implementing jsonserializer<pair<string, date>>
...?
thank time!
edit:
i'm trying use typeadapter<t>
no luck...
public class mytypeadapter extends typeadapter<pair<string, date>> { @override public pair<string, date> read(jsonreader jsonreader) throws ioexception { if (jsonreader.peek() == jsontoken.null) { jsonreader.nextnull(); return null; } string id = jsonreader.nextstring(); date evaluated = null; try { evaluated = mysimpledateformat.parse(jsonreader.nextstring()); } catch (parseexception e) { e.printstacktrace(); } return new pair<string, date>(id,evaluated); } @override public void write(jsonwriter jsonwriter, pair<string, date> stringdatepair) throws ioexception { if (stringdatepair == null) { jsonwriter.nullvalue(); return; } string output = stringdatepair.first + "," + stringdatepair.second; jsonwriter.value(output); } }
but when register typeadapter:
type type = new typetoken<pair<string, date>>() {}.gettype();
gsonbuilder builder = new gsonbuilder(); builder.registertypeadapter(type, new mytypeadapter()); gson g = builder.create(); string test = g.tojson(new pair<string, date>("123",new date()));
this:
builder.registertypeadapter(type, new mytypeadapter());
gives me nullpointerexception... why?
thanks.
gson gson = new gsonbuilder() .registertypeadapter(type, new mytypeadapter()) .enablecomplexmapkeyserialization() .create();
ok missing importante option:
.enablecomplexmapkeyserialization()
hope helps!
Comments
Post a Comment