2016-07-25 8 views
0

Unten ist mein Json Antwort -Json Array geben Ausnahme

CallWMDefaultWithRef1Response{CallWMDefaultWithRef1Result=[{"ROLE_NAME":"","USER_MOBILE":"","IMEI_NUMBER1":,"USER_ID":30,"ROLE_ID":4,"USER_NAME":""}]; } 

Unten ist mein Code -

if (resultlog!= null) { 

    try { 
    JSONArray resultarray = new JSONArray(resultlog); 
    for (int i = 0; i < resultarray.length(); i++) { 
     JSONObject c = resultarray.getJSONObject(i); 
     roleName = c.getString("ROLE_NAME"); 
     userMobile = c.getString("USER_MOBILE"); 
     imeiNumber = c.getString("IMEI_NUMBER1"); 
     userId = c.getString("USER_ID"); 
     roleid = c.getString("ROLE_ID"); 
     userNmae = c.getString("USER_NAME"); 
    } 
    } catch (JSONException e) { 
    e.printStackTrace(); 
    } 
} 

Unten ist mein Fehler

org.json.JSONException: Wert CallWMDefaultWithRef1Response vom Typ java.lang.String kann nicht in JSONArray

konvertiert werden
+0

Überprüfen Sie zunächst Ihre json Format – vinoth12594

+0

"IMEI_NUMBER1": Wert –

+0

fehlt Können Sie bitte einloggen 'resultlog' kurz vor dem' neue JSONArray nennen (...) '- es auch scheint, hat keinen Wert für die Eigenschaft 'IMEI_NUMBER1' angegeben. – ishmaelMakitla

Antwort

0

Unten resultLog ist Ihr tatsächliches JSON-Ergebnis.

String roleName = "", userMobile = "", imeiNumber = "", userNmae = ""; 
    int userId = 0, roleid = 0; 

(oder)

Wenn Ihr Durchfluss mit CallWMDefaultWithRef1Response als JSONObject beginnt dann sollten Sie unter Codezeilen innerhalb Try-Block hinzuzufügen.

String resultlog= "{CallWMDefaultWithRef1Response:{CallWMDefaultWithRef1Result:{"ROLE_NAME":"","USER_MOBILE":"","IMEI_NUMBER1":"","USER_ID":30,"ROLE_ID":4,"USER_NAME":""}}} 
    JSONObject resultJsonObject = null; 
    try { 
     JSONObject obj1 = new JSONObject(resultlog); 
     JSONObject obj2 = obj1.has("CallWMDefaultWithRef1Response") ? obj1.getJSONObject("CallWMDefaultWithRef1Response") : null; 
     resultJsonObject = obj2.has("CallWMDefaultWithRef1Result") ? obj2.getJSONObject("CallWMDefaultWithRef1Result") : null; 
     roleName = resultJsonObject.has("ROLE_NAME") ? resultJsonObject.getString("ROLE_NAME") : "";   
     userMobile = resultJsonObject.has("USER_MOBILE") ? resultJsonObject.getString("USER_MOBILE") : ""; 
     imeiNumber = resultJsonObject.has("IMEI_NUMBER1") ? resultJsonObject.getString("IMEI_NUMBER1") : ""; 
     userId = resultJsonObject.has("USER_ID") ? resultJsonObject.getInt("USER_ID") : "";    
     roleid = resultJsonObject.has("ROLE_ID") ? resultJsonObject.getInt("ROLE_ID") : "";    
     userNmae = resultJsonObject.has("USER_NAME") ? resultJsonObject.getString("USER_NAME") : "";   

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

Ansonsten unten verwenden:

+0

Dies ist die richtige Antwort. –

0

Ihre Fehler die gesamte Zeichenfolge als JSONArray verwendet.

Entfernen Sie CallWMDefaultWithRef1Response aus dem Protokoll. Dann erstellen Sie eine neue JSONObject von dem, was bleibt, und dann JSONArray CallWMDefaultWithRef1Result aus dem Objekt und Schleife, um die Objekte von der array zu bekommen.

0

meinen Code Versuchen

try{ 
    JSONObject result=resultlog.getJSONObject("CallWMDefaultWithRef1Response"); 
    JSONArray resultarray=result.getJSONArray("CallWMDefaultWithRef1Result"); 
     for(int i=0;i<resultarray.length();i++){ 
     JSONObject c=resultarray.getJSONObject(i); 
     roleName=c.getString("ROLE_NAME"); 
     userMobile=c.getString("USER_MOBILE"); 
     imeiNumber=c.getString("IMEI_NUMBER1"); 
     userId=c.getString("USER_ID"); 
     roleid=c.getString("ROLE_ID"); 
     userNmae=c.getString("USER_NAME"); 
     } 
} catch(JSONException e) { 
     e.printStackTrace(); 
} 
0

Ihre resultlog Saite scheint

CallWMDefaultWithRef1Response {CallWMDefaultWithRef1Result = [{ "ROLE_NAME" zu sein: "", "USER_MOBILE": "", "IMEI_NUMBER1 ":," USER_ID ": 30," ROLE_ID ": 4," USER_NAME ":" "}]; }

Es enthält eine Zeichenfolge (CallWMDefaultWithRef1Response) zusammen mit JSON Inhalt. Sie sollten nur den JSON-Inhalt an den neuen JSONArray() - Konstruktor übergeben.

Um das JSON-Array aus dem resultlog zu extrahieren, versuchen

resultlog = resultlog.substring(jsonStr.indexOf("["), jsonStr.lastIndexOf("]")+1); 

So resultlog wird

[{ "ROLE_NAME": "", "USER_MOBILE": "", "IMEI_NUMBER1" : "BENUTZER_ID": 30 "ROLE_ID": 4, "USER_NAME": ""}]

HINWEIS: hier ein litereal Wert fehlt nach "IMEI_NUMBER1" der wil Ich werfe eine JSONException.Sie sollten dies in Server zu korrigieren, eine leere Zeichenfolge nach IMEI_NUMBER1 enthalten.

0

Ich habe diese

mit sehr einfachen Step-- gelöst
try { 
     JSONArray resultarray = new JSONArray(resultlog.getProperty(0)); 
     for (int i = 0; i < resultarray.length(); i++) { 
       JSONObject c = resultarray.getJSONObject(i); 
       roleName = c.getString("ROLE_NAME"); 
       userMobile = c.getString("USER_MOBILE"); 
       imeiNumber = c.getString("IMEI_NUMBER1"); 
       userId = c.getString("USER_ID"); 
       roleid = c.getString("ROLE_ID"); 
       userNmae = c.getString("USER_NAME"); 
     } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 

Bitte wie meine Antwort für die Hilfe anderer.

Glücklich Coding ..

+0

Bitte erläutern Sie, warum Sie einen Minuspunkt angegeben haben. –