i trying parse huge json using gson library , main idea 1 value each object , save string. this json file using. , code using parse json:
public class postsactivity extends activity { private static final string tag = "postsactivity"; private list<post> posts; public textview textss; public int i; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_posts); textss = (textview)findviewbyid(r.id.texts); postfetcher fetcher = new postfetcher(); fetcher.execute(); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.posts, menu); return true; } private void handlepostslist(list<post> posts) { this.posts = posts; runonuithread(new runnable() { @override public void run() { for(post post : postsactivity.this.posts) { toast.maketext(postsactivity.this, post.title + " " + i, toast.length_short).show(); } } }); } private void failedloadingposts() { runonuithread(new runnable() { @override public void run() { toast.maketext(postsactivity.this, "failed load posts. have @ logcat. bls bls bls " , toast.length_short).show(); } }); } private class postfetcher extends asynctask<void, void, string> { private static final string tag = "postfetcher"; public static final string server_url = "http://kylewbanks.com/rest/posts"; @override protected string doinbackground(void... params) { try { //create http client httpclient client = new defaulthttpclient(); httppost post = new httppost(server_url); //perform request , check status code httpresponse response = client.execute(post); statusline statusline = response.getstatusline(); if(statusline.getstatuscode() == 200) { httpentity entity = response.getentity(); inputstream content = entity.getcontent(); try { ( = 0; < 4; i++) { //read server response , attempt parse json reader reader = new inputstreamreader(content); gsonbuilder gsonbuilder = new gsonbuilder(); gsonbuilder.setdateformat("m/d/yy hh:mm a"); gson gson = gsonbuilder.create(); list<post> posts = arrays.aslist(gson.fromjson(reader, post[].class)); content.close(); handlepostslist(posts); } } catch (exception ex) { log.e(tag, "failed parse json due to: " + ex); failedloadingposts(); } } else { log.e(tag, "server responded status code: " + statusline.getstatuscode()); failedloadingposts(); } } catch(exception ex) { log.e(tag, "failed send http post request due to: " + ex); failedloadingposts(); } return null; } } } i still learning , understand values saved in 1 big list , later these values displayed in toast. trying save value in string json this:
jsonarray arr = new jsonarray(result); jsonobject jobj = arr.getjsonobject(0); string date = jobj.getstring("neededstring"); how can achieve using gson library?
here's i've tried want.
//read server response , attempt parse json reader reader = new inputstreamreader(content); gsonbuilder gsonbuilder = new gsonbuilder(); gsonbuilder.setdateformat("m/d/yy hh:mm a"); gson gson = gsonbuilder.create(); //list<post> posts = arrays.aslist(gson.fromjson(reader, post[].class)); jsonarray posts = new jsonparser().parse(reader).getasjsonarray(); // first element @ index 0 post post1 = gson.fromjson(posts.get(0).getasjsonobject(), post.class); log.d(tag, "post1 .. " + post1.gettitle()); content.close(); //handlepostslist(posts); first of all, create gson jsonarray. , assign creating new jsonparser parses reader jsonarray.
and can extract first element of posts getting element @ index 0, , deserializes respective object.
i've used set/get post object title post1.gettitle().
the log says
post1 .. disabling google analytics in development using javascript
Comments
Post a Comment