2013-11-27 22 views
10

an diesem Fehler stecken geblieben:Wert vom Typ org.json.JSONArray kann nicht in JSONObject umgewandelt werden

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

So, hier ist der Code:

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

Was Sie nicht über die Ausnahme zu verstehen? –

+1

Es ist ein JSON-Array, es gibt kein Objekt darin, deshalb kann man es nicht umwandeln –

+0

Ich bin sehr schlecht in der JSON-Sache, danke für die Hilfe – MeIsOlsson

Antwort

25

[..] bedeutet sollte es ein JSONArray sein und {..} bedeutet, dass es ein JSONObject sein sollte.

Deshalb:

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

@ downvoter kannst du mich anrufen Grund – Hariharan

+0

Schöne Antwort .... –

1

Auch wenn ich ein einzelnes JSON-Objekt hatte es in einem Array gespeichert wurde als Hariharan hat mit den eckigen Klammern darauf hingewiesen [{Artikel: Artikel, ...}]

Meine Lösung war einfach das einzige Objekt parsen, in Array Position [0] wie dieses

JSONArray jsonArray = new JSONArray(stringIn); 

JSONObject obj = jsonArray.getJSONObject(0); 
Verwandte Themen