Parsing JSON api starting from an array - [
Parsing JSON api starting from an array - [
I am having trouble parsing my JSON API -
[ { "Id":1, "FirstName":"admin", "LastName":"admin", "Mobile":null, "Email":"rajaish.rolen@gmail.com", "UserName":"admin", "password":"admin", "RoleID":0, "CreationDate":"2013-11-15T00:00:00", "ModificationDate":"2013-11-15T00:00:00" } ]
I've read some tutorials online, with a JSONParser class in which there is a getJSONFromURL
method which returns JSONObject. But in all these tutorials their API starts from a JSON Object {
, whereas mine starts from an array [. What changes do I need to make so that I can parse this api? Any other way of doing it? Please help me out, its been a head-scratcher for 3 days.
Here is my JSONParser class -
package com.example.projectfortab; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.util.Log; public class JSONParser { static InputStream is = null; static JSONArray jObj = null; static String json = ""; // constructor public JSONParser() { } public JSONArray getJSONFromUrl(String url) { // Making HTTP request try { // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.setHeader("Accept", "application/json"); httpPost.setHeader("Content-type", "application/json"); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONArray(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON String return jObj; } }
and here is what I am doing to parse it -
private static final String url = (Some url); private static final String TAG_ID = "CreationDate"; private static final String TAG_FIRSTNAME = "password"; private static final String TAG_LASTNAME = "LastName"; String id; JSONArray user = null; here private class JSONParse extends AsyncTask { private ProgressDialog pDialog; @Override protected JSONArray doInBackground(String... params) { JSONParser jParser = new JSONParser(); JSONArray json = jParser.getJSONFromUrl(url); System.out.println("LENGTH" + json.length()); try { JSONObject json1 = json.getJSONObject(0); if(json1.has(TAG_ID)) id = json1.getString(TAG_ID); else System.out.println("NO SUCH KEY"); } catch (JSONException e) { e.printStackTrace(); } Log.d("anush", "ID From JSON : " + id); return json; }
when I tried this, logcat showing -
11-19 12:39:44.812: E/JSON Parser(29746): Error parsing data org.json.JSONException: Value {"ExceptionType":"System.NullReferenceException","Message":"An error has occurred.","StackTrace":" at Lifestyle.Models.UserLoginRepository.Save(UserLogin item) in D:\\project\\LifestyleSolution2\\LifestyleSolution\\LifestyleSolution\\Lifestyle\\Models\\Repository\\UserLoginRepository.cs:line 83\r\n at Lifestyle.Controllers.UserController.Post(UserLogin user) in D:\\project\\LifestyleSolution2\\LifestyleSolution\\LifestyleSolution\\Lifestyle\\Controllers\\UserController.cs:line 51","ExceptionMessage":"Object reference not set to an instance of an object."} of type org.json.JSONObject cannot be converted to JSONArray
and
11-19 12:39:44.842: E/AndroidRuntime(29746): FATAL EXCEPTION: AsyncTask #1 11-19 12:39:44.842: E/AndroidRuntime(29746): java.lang.RuntimeException: An error occured while executing doInBackground() 11-19 12:39:44.842: E/AndroidRuntime(29746): at android.os.AsyncTask$3.done(AsyncTask.java:299) 11-19 12:39:44.842: E/AndroidRuntime(29746): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 11-19 12:39:44.842: E/AndroidRuntime(29746): at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 11-19 12:39:44.842: E/AndroidRuntime(29746): at java.util.concurrent.FutureTask.run(FutureTask.java:239) 11-19 12:39:44.842: E/AndroidRuntime(29746): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 11-19 12:39:44.842: E/AndroidRuntime(29746): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 11-19 12:39:44.842: E/AndroidRuntime(29746): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 11-19 12:39:44.842: E/AndroidRuntime(29746): at java.lang.Thread.run(Thread.java:856) 11-19 12:39:44.842: E/AndroidRuntime(29746): Caused by: java.lang.NullPointerException 11-19 12:39:44.842: E/AndroidRuntime(29746): at com.example.projectfortab.FirstActivity$JSONParse.doInBackground(FirstActivity.java:260) 11-19 12:39:44.842: E/AndroidRuntime(29746): at com.example.projectfortab.FirstActivity$JSONParse.doInBackground(FirstActivity.java:1) 11-19 12:39:44.842: E/AndroidRuntime(29746): at android.os.AsyncTask$2.call(AsyncTask.java:287) 11-19 12:39:44.842: E/AndroidRuntime(29746): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 11-19 12:39:44.842: E/AndroidRuntime(29746): ... 4 more
Answer by Suneel Prakash for Parsing JSON api starting from an array - [
Read the response to a String and then use the following code.
try { JSONObject jsonObject = new JSONArray("ResponseString").getJSONObject(0); jsonObject.getString("RequiredStrings"); ---- ---- } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); }
Answer by Shani Goriwal for Parsing JSON api starting from an array - [
try to this..
String request = value[0]; response = webAPIRequest.performPost_String(request,null); if(response != null) { Log.i("Message Send Respopnce:==",response); try { JSONObject j_object_main=new JSONObject(response); JSONObject j_object_data=j_object_main.optJSONObject("data"); success=j_object_data.optString("Success"); if(success.equalsIgnoreCase("1")) { JSONArray jarray_news=j_object_data.optJSONArray("newInfo"); for(int i=0;i
Answer by GrIsHu for Parsing JSON api starting from an array - [
Try out as below:
JSONArray m_arry = new JSONArray("your response"); for (int i = 0; i < m_arry.length(); i++) { JSONObject m_mydetail = m_arry.getJSONObject(i); String id=m_mydetail.getString("Id"); String firstName=m_mydetail.getString("FirstName"); String lastName= m_mydetail.getString("LastName"); String email =m_mydetail.getString("Email"); ............................... //and so on. }
For more check HERE
Answer by Jhanvi for Parsing JSON api starting from an array - [
Try this:
URL url1 = new URL("YOUR_URL"); HttpURLConnection request1 = (HttpURLConnection) url1.openConnection(); request1.setRequestMethod("GET"); request1.connect(); String responseBody = convertStreamToString(request1.getInputStream()); JSONArray jsonArray = new JSONArray(responseBody); for (int i = 0; i < jsonArray.length(); i++) { String email = jsonArray.getJSONObject(i).getString("Email"); System.out.println(email); //... Similarly you can parse all the objects.. }
Method used in above class:
private static String convertStreamToString(InputStream is) { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line = null; try { while ((line = reader.readLine()) != null) { sb.append(line).append("\n"); } } catch (IOException e) { } finally { try { is.close(); } catch (IOException e) { } } return sb.toString(); }
Answer by SHASHIDHAR MANCHUKONDA for Parsing JSON api starting from an array - [
try { JSONArray jarray = new JSONArray(Resoponsedata); JSONObject jobject = jarray.getJSONObject(0); String id = jobject .getString("Id"); --------------- } catch (JSONException e) { e.printStackTrace(); }
refer http://jsontree.com/
Fatal error: Call to a member function getElementsByTagName() on a non-object in D:\XAMPP INSTALLASTION\xampp\htdocs\endunpratama9i\www-stackoverflow-info-proses.php on line 72
0 comments:
Post a Comment