JSON parsing is just a cakewalk once you are familiar with JSON format
Generally JSON response consists of :
1.) Objects
2.) Array of Objects
Each object has its attributes as name : value pair.
Object, called as JSONObject, starts with { and array, called as JSONArray, starts with [.
For example :
a.) JSON Structure Example |
To parse a response that looks like array example above :
1.) Use jObj.getJSONArray("arrayName") to retrieve the array
2.) Iterate over all the objects in that array using length()
3.) Fetch each object
4.) Retrieve each item of object (retrieved as name-value pair) using getString("name") or other appropriate method
5.) In case there is a single object, it can be retrieved directly using step 3, and if there is only name-value pair, use step 4.
1.) Use jObj.getJSONArray("arrayName") to retrieve the array
2.) Iterate over all the objects in that array using length()
3.) Fetch each object
4.) Retrieve each item of object (retrieved as name-value pair) using getString("name") or other appropriate method
5.) In case there is a single object, it can be retrieved directly using step 3, and if there is only name-value pair, use step 4.
Here, jObj is the JSONObject – the response obtained after executing HTTP Post request.
A quick look at how its done :
HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(“URL”); HttpEntity entity = null; String json = ""; JSONObject jObj = null; //Add your data, if any, for the request Listpairs = new ArrayList (); pairs.add(new BasicNameValuePair("sample", “sample”)); post.setEntity(new UrlEncodedFormEntity(pairs)); //Execute the request HttpResponse response = client.execute(post); //Retrieve the response which is InputStreamReader entity = response.getEntity(); InputStreamReader is = new InputStreamReader(entity.getContent(), "UTF-8"); if (is != null) { BufferedReader reader = new BufferedReader(is); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } json = sb.toString(); jObj = new JSONObject(json); }
PS : HTTP Post request should be used in non-UI thread (use AysncTask) .
~Divya
~Divya