Note that there are some explanatory texts on larger screens.

plurals
  1. POConvert string to a json object
    text
    copied!<p>I want to create json object from a string that comes as a response from a servlet in my server.</p> <pre><code>public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; // constructor public JSONParser() { } public JSONObject getJSONFromUrl(String url,String a) { ArrayList&lt;NameValuePair&gt; postParameters = new ArrayList&lt;NameValuePair&gt;(); postParameters.add(new BasicNameValuePair("branchname", a)); try { // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); httppost.setEntity(new UrlEncodedFormEntity(postParameters)); 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 JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } return jObj; }} </code></pre> <p>This is my servlet..</p> <pre><code>public class AvailabilityResponse extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=response.getWriter(); String br_id; br_id=request.getParameter("branchname"); try{ Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection con=DriverManager.getConnection("jdbc:mysql://localhost:8888 /atmlivedetails","root","root"); Statement st=con.createStatement(); ResultSet rs=st.executeQuery("select atmbrno, atmbrname from location_stat where act_brname='"+br_id+"'"); int i=0; JSONArray jArray = new JSONArray(); while(rs.next()){ String s = rs.getString("atmbrno"); String t = rs.getString("atmbrname"); JSONObject arrayObj = new JSONObject(); arrayObj.put("atmbrno",s); arrayObj.put("atmbrname",t); jArray.add(i,arrayObj); i++; } rs.close (); st.close (); out.print(jArray); } catch(Exception e){ out.print(e); } }} </code></pre> <p>but when I run this it says Error </p> <pre><code>"parsing data org.json.JSONException: Value [{"atmbrname":"ANURADAPURA [ATM 2]","atmbrno":"ATM084"},{"atmbrname":"MANNAR BRANCH ","atmbrno":"ATM344"}] of type org.json.JSONArray cannot be converted to JSONObject" </code></pre> <p>what is the wrong in this case?</p> <p>Here is my calling class</p> <pre><code>public class ListAtmActivity extends ListActivity{ private static String url ="http://10.0.2.2:8080/hello/AvailabilityResponse"; //TextView error; //String brName; //Bundle b = getIntent().getExtras(); //String brName = b.getString("key"); private static final String TAG_CONTACTS = "contacts"; private static final String TAG_ID = "id"; private static final String ATM_NO = "atmbrno"; private static final String ATM_PLACE = "atmbrname"; // contacts JSONArray //JSONArray contacts = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list_item); String brName=getIntent().getExtras().getString("key"); /*Bundle b = getIntent().getExtras(); brName = b.getString("key"); */ // Hashmap for ListView ArrayList&lt;HashMap&lt;String, String&gt;&gt; contactList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;(); // Creating JSON Parser instance JSONParser jParser = new JSONParser(); // getting JSON string from URL JSONObject json = jParser.getJSONFromUrl(url,brName); try{ //String results; JSONArray contacts = json.getJSONArray(TAG_CONTACTS); for(int i = 0; i &lt; contacts.length(); i++){ JSONObject json_data = contacts.getJSONObject(i); // Storing each json item in variable String atm_id = json_data.getString(ATM_NO); String atm_name = json_data.getString(ATM_PLACE); HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;(); map.put(ATM_NO, atm_id); map.put(ATM_PLACE, atm_name); contactList.add(map); } } catch(JSONException e) { e.printStackTrace(); } /** * Updating parsed JSON data into ListView * */ ListAdapter adapter = new SimpleAdapter(this, contactList, R.layout.list_main, new String[] { ATM_NO, ATM_PLACE }, new int[] { R.id.name , R.id.email }); setListAdapter(adapter); }} </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload