2013-11-27 14 views
10

utknął na ten błąd:Wartość typu org.json.JSONArray nie mogą być konwertowane do JSONObject

3169-3190/com.meisolsson.app E/JSON Parser﹕ Error parsing data org.json.JSONException: Value [{"type":0,"can_see_custom_stories":true,"display":"","name":"jenniaim"},{"type":0,"can_see_custom_stories":true,"display":"","name":"lucasgardebrand"},{"type":0,"can_see_custom_stories":true,"display":"","name":"herr_anderzzon"},{"type":0,"can_see_custom_stories":true,"display":"","name":"chrillebile"},{"type":0,"can_see_custom_stories":true,"display":"","name":"meisolsson"},{"type":0,"can_see_custom_stories":true,"display":"","name":"sakanapanda"},{"type":0,"can_see_custom_stories":true,"display":"Team Snapchat","name":"teamsnapchat"},{"type":0,"can_see_custom_stories":true,"display":"","name":"fabianlindfors"},{"type":0,"can_see_custom_stories":true,"display":"Katja","name":"katjaawesome"},{"type":0,"can_see_custom_stories":true,"display":"","name":"swimkey"},{"type":1,"can_see_custom_stories":true,"display":"","name":"agnesholmberg"}] of type org.json.JSONArray cannot be converted to JSONObject

Tak oto kod:

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; 
} 
} 
+0

Czego nie rozumiesz o wyjątku? –

+1

To jest tablica json, nie ma w niej obiektu, dlatego nie można go przekonwertować –

+0

Jestem bardzo zły w rzeczy JSON, dzięki za pomoc – MeIsOlsson

Odpowiedz

25

[..] oznacza powinno być JSONArray i {..} oznacza, że ​​powinien to być JSONObject.

Dlatego:

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

@downvoter czy możesz tel mnie powód – Hariharan

+0

Dobra odpowiedź .... –

1

Choć miałem pojedynczy obiekt JSON został zapisany w tablicy jako Hariharan wskazał z nawiasami kwadratowymi [{pozycji: wystrój, ...}]

Moje rozwiązanie było po prostu analizować out jedyny obiekt, który znajduje się w pozycji array [0] jak to

JSONArray jsonArray = new JSONArray(stringIn); 

JSONObject obj = jsonArray.getJSONObject(0); 
Powiązane problemy