2016-08-01 11 views
0

Ich bin mit Retrofit-Bibliothek Httpclient-Post-Anforderung zu machen, aber, ich nicht Antwort Körper JSONObject Konstruktor übergeben kann, wenn ich versuche Antwort auf JSONObject passieren mit:unhandeled Ausnahme org.json.JSONObject

org.json.JSONObject Jobject = new org.json.JSONObject(jsonData); 

ich habe die folgende Ausnahme:

unhandeled Ausnahme org.json.JSONObject

Mein Code:

call.enqueue(new Callback<ResponseBody>() { 
       @Override 
       public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { 
        if(response.isSuccessful()){ 

        String jsonData = response.body().toString(); 

        JSONObject Jobject = new JSONObject(jsonData); 

       } 

      } 

      @Override 
      public void onFailure(Call<ResponseBody> call, Throwable t) { 
       display_message.setText(t.toString()); 
      } 
     }); 

Der erwartete Rückgabewert aus der folgenden Aussage:

String jsonData = response.body().source().toString(); 

ist: {"is_new_user":true,"messing_user_data["mobile_number","country_code","password","pin"]}

Aber die genaue zurückgegebene Ergebnis ist:

[size=90 text={"is_new_user":true,"messing_user_data":["mobile_number","countr…] 

Irgendwelche Ideen helfen mir.

+0

Add 'JSONObject Jobject = neues JSONObject (jsonData); 'innerhalb eines' try' Blocks und fangen 'JSONException' im' catch' Block. –

+0

Können Sie Log JsonData schreiben? Bitte überprüfen Sie, ob es sich um eine JSON-Datei handelt. JsonObject oder JsonArray? – sonnv1368

+0

Bitte beachten Sie die obigen zusätzlichen Updates –

Antwort

0

Sie sollten umgeben Ihr

JSONObject Jobject = new JSONObject(jsonData); 

mit einem Try-Catch-Block

call.enqueue(new Callback<ResponseBody>() { 
     @Override 
     public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { 
      if(response.isSuccessful()){ 

      String jsonData = response.body().toString(); 

      try { 
       JSONObject Jobject = new JSONObject(jsonData); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } 

    } 

    @Override 
    public void onFailure(Call<ResponseBody> call, Throwable t) { 
     display_message.setText(t.toString()); 
    } 
}); 

und versuchen Sie Ihr json Zeichenfolge zu überprüfen, ob es das richtige Format hat, wie Sie benötigen

+0

Nach umgeben JSONObject mit try-catch hatte ich die folgende Ausnahme: org.json.JSONException: Wert [email protected] des Typs java.lang.String kann nicht in JSONObject konvertiert werden –

+0

Bitte siehe oben zusätzliche Updates –

+0

Nun, es ist offensichtlich, da Ihre Zeichenfolge kein gültiges JSON-Objekt ist. Bitte überprüfen Sie erneut Ihre Zeichenfolge {"is_new_user": true, "messing_user_data [" mobile_nummer "," country_code "," password "," pin "]} – HendraWD