android - Gson deserializing issue -
hi want develope android app , webservice , cannot change it. pull data , when data available this.
field_teaser: { und: [ { value: "some value", format: null } ] } but when there no data this
field_teaser: [ ] i used code below overcome issue
public class teaserfield implements jsondeserializer<newsteaser> { @override public newsteaser deserialize(jsonelement json, type typeoft, jsondeserializationcontext context) throws jsonparseexception { jsonelement monumentelement = json.getasjsonobject().get("field_teaser"); if(monumentelement==null) return null; if (monumentelement.isjsonarray()) { // return new newsteaser((newsund[]) context.deserialize(monumentelement.getasjsonarray(), newsund[].class)); return null; } else if (monumentelement.isjsonobject()) { return new newsteaser((newsund) context.deserialize(monumentelement.getasjsonobject(), newsund.class)); } else { return null; } } } the problem have many fields make such behavior , when want register registertypeadapter first typeadapter.
gson gson = new gsonbuilder().registertypeadapter(newsteaser.class, new teaserfield()).registertypeadapter(newsbody.class, new bodyfield()).create(); retrofit retrofit = new retrofit.builder() .baseurl(url) .client(clientbuilder.build()) .addconverterfactory(gsonconverterfactory.create(gson)) .create())) .build(); actually if somehow tell gson if encounter [] in situation return null happy.
Comments
Post a Comment