org.json.JSONArraytypes的值不能转换为JSONObject

被困在这个错误:

3169-3190 / com.meisolsson.app E / JSONparsing器:parsing数据时出错org.json.JSONException:Value [{“type”:0,“can_see_custom_stories”:true,“display”:“”,“name”:“ jenniaim “},{” types “:0,” can_see_custom_stories “:真,” 显示 “:””, “名称”: “lucasgardebrand”},{ “types”:0, “can_see_custom_stories”:真, “显示”: “”, “名称”: “herr_anderzzon”},{ “types”:0, “can_see_custom_stories”:真, “显示”: “”, “名称”: “chrillebile”},{ “types”:0,“can_see_custom_stories “:真,” 显示 “:””, “名称”: “meisolsson”},{ “types”:0, “can_see_custom_stories”:真, “显示”: “”, “名称”: “sakanapanda”},{ “type”:0,“can_see_custom_stories”:true,“display”:“Team Snapchat”,“name”:“teamslogged”},{“type”:0,“can_see_custom_stories”:true,“display”:“ “名称”: “fabianlindfors”},{ “types”:0, “can_see_custom_stories”:真, “显示”: “卡佳”, “名称”: “katjaawesome”},{ “types”:0, “can_see_custom_stories”: true,“display”:“”,“name”:“swimkey”},{“type”:1,“can_see_custom_stories”:true,“display”:“”,“name”:“agnesholmberg”}] .json.JSONArray无法转换为JSON 目的

所以这里是代码:

public class JSONParser extends AsyncTask<Void, Void, Boolean> { 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); ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); nameValuePairs.add(new BasicNameValuePair("username", LoginActivity.Suser)); nameValuePairs.add(new BasicNameValuePair("password", LoginActivity.Spass)); httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 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 JSON String return jObj; } @Override protected Boolean doInBackground(Void... params) { getJSONFromUrl("http://flapplabs.se/development/snapchat/friends.php"); return null; } } 

Solutions Collecting From Web of "org.json.JSONArraytypes的值不能转换为JSONObject"

[..]意味着它应该是一个JSONArray{..}意味着它应该是一个JSONObject

因此:

 try { JSONArray jObj = new JSONArray(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } 

即使我有一个单一的JSON对象,它就像Hariharan用方括号[{items:items,…}]指出的那样存储在一个数组中

我的解决scheme是parsing出唯一的对象,像这样位于数组位置[0]

 JSONArray jsonArray = new JSONArray(stringIn); JSONObject obj = jsonArray.getJSONObject(0);