java - com.google.gson.JsonSyntaxException:Expected STRING but was BEGIN_ARRAY -


kindly me subnodes list inside bom attributes

json file

[    {     "subconfigid":"bac",   "totalprice":"634.00",   "bom":{        "ucid":"ucid",      "type":"rootnode",      "attributes":{           "visible":true,         "price_status":"success"      },      "subnodes":[           {              "description":"enterprise shock rack",            "ucid":"ucid"         },         {              "description":"svc",            "ucid":"ucid"         }      ]   },   "breakdown":{        "sv":550.0,      "hw":6084.0   },   "currency":"usd"  } ] 

gsonnodes.java

 import java.io.filereader;  import java.io.ioexception;  import java.util.iterator;  import com.google.gson.gson;  import com.google.gson.jsonarray;  import com.google.gson.jsonelement;  import com.google.gson.jsonparser;    public class gsonnodes {   public static void main(string[] args) throws ioexception {         try{                       jsonelement je = new jsonparser().parse(new filereader(              "c:/desktop/json.txt"));      jsonarray ja = je.getasjsonarray();      iterator itr = ja.iterator();       while(itr.hasnext()){          jsonelement je1 = (jsonelement) itr.next();          gson gson = new gson();          details details = gson.fromjson(je1, details.class);                     system.out.println(details.getsubconfigid());          system.out.println(details.getcurrency());          system.out.println(details.getbreakdown());          system.out.println(details.gettotalprice());          system.out.println(details.getbom().getucid());                }   } catch (exception e) {   e.printstacktrace();   } } } 

details.java pojo

    import java.io.serializable;     import java.util.map;     public class details implements serializable{          private string subconfigid;         private string totalprice;         private bom bom;              private string currency;         private map<string, string> breakdown;          public string getsubconfigid() {             return subconfigid;         }         public void setsubconfigid(string subconfigid) {             this.subconfigid = subconfigid;         }         public string gettotalprice() {             return totalprice;         }         public void settotalprice(string totalprice) {             this.totalprice = totalprice;         }         public bom getbom() {             return bom;         }         public void setbom(bom bom) {             this.bom = bom;         }         public string getcurrency() {             return currency;         }         public void setcurrency(string currency) {             this.currency = currency;         }         public map<string, string> getbreakdown() {             return breakdown;         }         public void setbreakdown(map<string, string> breakdown) {             this.breakdown = breakdown;         }     } 

bom.java

    import java.io.serializable;     import java.util.arraylist;     import java.util.list;     import java.util.map;      public class bom implements serializable{          private string ucid;         private string type;         private map<string, string> attributes;         private list<subnodes> subnodes = new arraylist<subnodes>();            public string getucid() {             return ucid;         }         public void setucid(string ucid) {             this.ucid = ucid;         }         public string gettype() {             return type;         }         public void settype(string type) {             this.type = type;         }         public map<string, string> getattributes() {             return attributes;         }         public void setattributes(map<string, string> attributes) {             this.attributes = attributes;         }             @override         public string tostring(){             return getucid() + ", "+gettype()+", "+getattributes();         }      } 

subnodes.java

    import java.io.serializable;     import java.util.map;      public class subnodes implements serializable{          private string description;         private string ucid;         private map<string, string> attributes;          public string getdescription() {             return description;         }         public void setdescription(string description) {             this.description = description;         }         public string getucid() {             return ucid;         }         public void setucid(string ucid) {             this.ucid = ucid;         }         public map<string, string> getattributes() {             return attributes;         }         public void setattributes(map<string, string> attributes) {             this.attributes = attributes;         }        } 

i getting error , when try "subnodes" added following code in class

  private list<subnodes> subnodes = new arraylist<subnodes>(); 

then getting error "expected string begin_array"

kindly me how can "subnodes" list

in bom.java

please add getter/setter method :

private list<subnodes> subnodes = new arraylist<subnodes>();  public list<subnodes> getsubnodes() {     return subnodes; }  public void setsubnodes(list<subnodes> subnodes) {     this.subnodes = subnodes; } 

i have tried below .. working fine.

package com.brp.mvc.util;  import java.io.ioexception; import java.util.iterator;  import com.google.gson.gson; import com.google.gson.jsonarray; import com.google.gson.jsonelement; import com.google.gson.jsonparser;  public class gsonnodes {     public static void main(string[] args) throws ioexception {          try {             jsonelement je = new jsonparser().parse("[{\"subconfigid\":\"bac\",\"totalprice\":\"634.00\",\"bom\":{\"ucid\":\"ucid\",\"type\":\"rootnode\",\"attributes\":{\"visible\":true,\"price_status\":\"success\"},\"subnodes\":[{\"description\":\"enterprise shock rack\",\"ucid\":\"ucid\"},{\"description\":\"svc\",\"ucid\":\"ucid\"}]},\"breakdown\":{\"sv\":550.0,\"hw\":6084.0},\"currency\":\"usd\"}]");             jsonarray ja = je.getasjsonarray();             iterator itr = ja.iterator();              while (itr.hasnext()) {                 jsonelement je1 = (jsonelement) itr.next();                 gson gson = new gson();                 details details = gson.fromjson(je1, details.class);                  system.out.println(details.getsubconfigid());                 system.out.println(details.getcurrency());                 system.out.println(details.getbreakdown());                 system.out.println(details.gettotalprice());                 system.out.println(details.getbom().getucid());                 system.out.println(details.getbom().getsubnodes().get(0).getdescription());             }         } catch (exception e) {             e.printstacktrace();         }     } } 

Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -