android - Json conversion with GSON: Expected BEGIN_ARRAY but was BEGIN_OBJECT -


for learning purpose want build simple android rest client using retrofit , gson. json string want parse:

{   "kind": "listing",   "data": {     "modhash": "qo2fwmjj5iee4adde638f97d5a7063087439bf4985aab4c9a5",     "children": [       {         "kind": "t5",         "data": {           "banner_img": "",.... 

my data model:

public class response {      @serializedname("kind")     private string kind;      @serializedname("data")     private data data;      public string getkind() {         return kind;     }      public void setkind(string kind) {         this.kind = kind;     }       public data getdata() {         return data;     }      public void setdata(data data) {         this.data = data;     } }  public class data {      @serializedname("modhash")     private string modhash;      @serializedname("after")     private string after;      @serializedname("before")     private string before;      @serializedname("children")     private list<child> children;      public string getmodhash() {         return modhash;     }      public void setmodhash(string modhash) {         this.modhash = modhash;     }      public string getafter() {         return after;     }      public void setafter(string after) {         this.after = after;     }      public string getbefore() {         return before;     }      public void setbefore(string before) {         this.before = before;     }      public list<child> getchildren() {         return children;     }      public void setchildren(list<child> children) {         this.children = children;     } }  public class child {     @serializedname("kind")     private string kind;     @serializedname("data")     private list<sub> data;      public string getkind() {         return kind;     }      public void setkind(string kind) {         this.kind = kind;     }      public list<sub> getdata() {         return data;     }      public void setdata(list<sub> data) {         this.data = data;     } } 

unit test:

public class test {      private gsonconverter gsonconverter;     private  gson gson;      private logger logger = logger.getlogger(test.class.getname());      public  test() {          gson = new gsonbuilder()                 .setdateformat("yyyy'-'mm'-'dd't'hh':'mm':'ss'.'sss'z'")                 .create();         gsonconverter = new gsonconverter(gson);     }      @test     public void testdata() {         response response = gson.fromjson(testutil.response_string, response.class);         logger.info("data " + response.getdata());          assert.assertnotnull(response.getdata());     } } 

so when parser reaches "children" attribute, following error occurs.

caused by: java.lang.illegalstateexception: expected begin_array begin_object     @ com.google.gson.internal.bind.jsontreereader.expect(jsontreereader.java:139)     @ com.google.gson.internal.bind.jsontreereader.beginarray(jsontreereader.java:58)     @ com.google.gson.internal.bind.collectiontypeadapterfactory$adapter.read(collectiontypeadapterfactory.java:79)     @ com.google.gson.internal.bind.collectiontypeadapterfactory$adapter.read 

don't know do, tried different things, have handle "children" myself because of [ bracket?

field data in child class shouldn't list. object in json make object in data model.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -