2013-07-25 17 views
5

Ich erhalte eine Ausnahme bei der Arbeit in JSON. Meine JSONPresr Klasse ist wie folgtorg.json.JSONObject kann nicht in JSONArray konvertiert werden

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; 

    } 

    } 

erhalte ich meine Daten von diesem Code

  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(); 
      } 

aber ich bin countiniously Ausnahme immer in dieser Linie

user_detail_jsonarray = json.getJSONArray(TAG_user_detail); 

Meine Stake Trace-Nachricht ist als

 {"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 

Ich habe viele Links ausprobiert, aber leider kann ich mein Ergebnis nicht erreichen. Bitte helfen Sie mir, dieses Problem zu lösen. Vielen Dank im Voraus an alle

+2

Sie erhalten JSONObject für 'TAG_user_detail' kein Array –

+0

Schreiben Sie bitte einen Code – DJhon

+0

Welcher Code? Setze dein komplettes JSON ein. –

Antwort

21

Seine klare repräsentiert von Fehler, die Sie versuchen Json Objekt in die Json-Array zu konvertieren. Das sollte nicht.

Hier ist der Code zum Lesen Ihrer JSON-Antwort.

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("re‌​f_id"); 

} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

Der obige Code ist für {"user_details":{"user_id":"1","user_name":"chand","user_phone":"9620085675","re‌​f_id":6386}} JSON.

+0

Lieber Pankaj, ich habe gerade mein Problem gelöst, indem ich den Rückgabetyp geändert habe und Ihnen geholfen habe .... \ – DJhon

+0

Ok .. Entschuldigung Mann ... ich bin am Rande des Wahnsinnszustandes ... aber ich habe Sie aufgewertet – DJhon

+0

hey ... ich hoffe es Ich werde auf jene reiten .. :) alles Gute –

3

Ihre jsondata ist JSON-Objekt-Format. Ändern Sie diese Zeile

JsonObject user_detail_jsonobj = json.getJSONObject(TAG_user_detail); 
7

Lernen Sie von Ausnahme

org.json.JSONObject cannot be converted to JSONArray 

Sie erhalten diese Ausnahme org.json.JSONObject cannot be converted to JSONArray , weil Sie versuchen, JSONObject to JSONArray zu konvertieren, was nicht möglich ist.

{ stellt json Objektknoten

[ Knoten json Array

+0

danke für Ihre Antwort ... Willst du bitte einen Code hier posten ,,,,, wird es Hilfe für mich voll – DJhon

+0

@BlueGreen versuchen, indem JSONObject zu analysieren! –

+1

@BlueGreen wie wenn Sie Benutzername als verwenden möchten: String name_fromjson = (String) json.get ("user_name"); keine Notwendigkeit für for-Schleife sowie von jsonarray! –

Verwandte Themen