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
Post a Comment