在json中工作时出现异常。我的JSONPresr类如下
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.JSONException; import org.json.JSONObject; import android.os.AsyncTask; import android.util.Log; public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; // constructor public JSONParser() { } public JSONObject getJSONFromUrl(String url) { // Making HTTP request try { // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); 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, "UTF-8"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); System.out.println(" value in json sting"+json); } 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()); Log.e("JSON Parser", "Error parsing data [" + e.getMessage()+"] "+json); System.out.println(" error is here"); } // return JSON String return jObj; } }
我正在通过这些代码获取数据
String TAG_user_detail = "user_details"; String TAG_user_id = "user_id"; String TAG_user_name = "user_name"; String TAG_user_phone = "user_phone"; String TAG_ref_id = "ref_id"; JSONArray user_detail_jsonarray = null; JSONParser jParser = new JSONParser(); // getting JSON string from URL JSONObject json = jParser.getJSONFromUrl(url); try { // Getting Array of Contacts user_detail_jsonarray = json.getJSONArray(TAG_user_detail); // looping through All Contacts for(int i = 0; i < user_detail_jsonarray.length(); i++){ JSONObject c = user_detail_jsonarray.getJSONObject(i); // Storing each json item in variable int id = c.getInt(TAG_user_id); System.out.println("user id from json"+id); String name_fromjson = c.getString(TAG_user_name); System.out.println("user name from json"+name_fromjson); int phone_no_fromjson = c.getInt(TAG_user_phone); System.out.println("user phone from json"+phone_no_fromjson); int ref_id_fromjson = c.getInt(TAG_ref_id); System.out.println("user ref id from json"+ref_id_fromjson); } } catch (JSONException e) { e.printStackTrace(); }
但是我非常惊讶地在这一行中获得异常
user_detail_jsonarray = json.getJSONArray(TAG_user_detail);
我的股权跟踪消息为
{"ref_id":1295,"user_name":"chand","user_phone":"9620085675","user_id":"1"} at user_details of type org.json.JSONObject cannot be converted to JSONArray
我尝试了许多链接,但不幸的是我无法获得结果。请任何人帮助我解决这个问题。在此先感谢所有人
从错误中可以明显看出,您正在尝试将Json Object转换为Json数组。那不应该。
这是读取您的JSON响应的代码。
String json = "Assuming that here is your JSON response"; try { JSONObject parentObject = new JSONObject(json); JSONObject userDetails = parentObject.getJSONObject("user_details"); //And then read attributes like String name = userDetails.getString("user_name"); String phone = userDetails.getString("user_phone"); String id = userDetails.getString("ref_id"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); }
上面的代码用于{"user_details":{"user_id":"1","user_name":"chand","user_phone":"9620085675","ref_id":6386}}JSON。
{"user_details":{"user_id":"1","user_name":"chand","user_phone":"9620085675","ref_id":6386}}