2013-09-27 3 views
9

Ich erhalte den Fehler org.json.JSONException: Kein Wert für PROJECT_NAME Das ist mein jsonFehler org.json.JSONException: Kein Wert für PROJECT_NAME Das ist mein json

{"PROJECTS":[ 
     { 
      "PROJECT_NUMBER": "2062", 
      "PROJECT_NAME": "OPW 51183" 
     }, 
     { 
      "PROJECT_NUMBER": "404", 
      "PROJECT_NAME": "404" 
     }, 
     { 
      "PROJECT_NUMBER": "2125", 
      "PROJECT_NAME": "OPW 50016" 
     }, 
     { 
      "PROJECT_NUMBER": "" 
     }, 
     { 
      "PROJECT_NUMBER": "2130", 
      "PROJECT_NAME": "OPW 51151 63rd & Shirley SEW S" 
     }, 
     { 
      "PROJECT_NUMBER": "2159", 
      "PROJECT_NAME": "OPW 51226" 
     } 
     ] 

    } 

und Kabeljau ist:

for (int i = 0; i < innerProjectarray.length(); i++) 
    { 

JSONObject obj=innerProjectarray.getJSONObject(i); 
String projectnumber1=obj.getString("PROJECT_NUMBER"); 
String projectname1=obj.getString("PROJECT_NAME"); 
     } 

gibt es eine Möglichkeit ist, den Schlüssel zu finden, wenn Schlüssel nicht dann np Notwendigkeit bestehen die Wert Od bestimmte Zeichenfolge Helfen Sie mir dank

+0

Sie nicht den Wert für diesen Parameter erhalten, während Antwort von Server-Seite bekommen – harikrishnan

+0

, wie diese Art von json zu analysieren Ich habe große json aber ich habe hier einen kleinen teil –

+0

der obige code ist wie, json antwort ist muss. während JSON Antwort einige Zeit bekommen, der Schlüssel Wert Parameter selbst nicht vorhanden .., dass Zeit so viel Fehler wird sicherlich kommen .. – harikrishnan

Antwort

40

Verwenden Sie has, um zu prüfen, ob der Schlüssel in Json vorhanden ist. Es gibt true zurück, wenn dieses Objekt eine Zuordnung für name hat.

wie

for (int i = 0; i < innerProjectarray.length(); i++) { 

    JSONObject obj = innerProjectarray.getJSONObject(i); 
    if (obj.has("PROJECT_NUMBER")) { 
     String projectnumber1 = obj.getString("PROJECT_NUMBER"); 
    } 

    if (obj.has("PROJECT_NAME")) { 
     String projectname1 = obj.getString("PROJECT_NAME"); 
    } 
} 

ist eine weitere Möglichkeit optString zu verwenden, die den Wert nach Namen zugeordnet zurückgibt, wenn es vorhanden ist, ist es bei Bedarf Nötigung. Gibt die leere Zeichenfolge zurück, wenn keine solche Zuordnung existiert.

for (int i = 0; i < innerProjectarray.length(); i++) { 

    JSONObject obj = innerProjectarray.getJSONObject(i); 

    String projNum = obj.optString("PROJECT_NUMBER"); 
    String projName = obj.optString("PROJECT_NAME"); 
    // and use both values. 
} 
+0

Dank es funktioniert –

+0

Congs ... Sie haben es getan. und willkommen :) –

+0

Ich habe die Frage, dass es 20000 Iteration haben, ist es möglich, in sqlite zu speichern, weil es viel Zeit zu speichern und holen oder einen Wert Vorschlag nehmen? –

1
{ 
     "PROJECT_NUMBER": "" 
    }, 
zu erhalten 0

Hier haben Sie nur "PROJECT_NUMBER", Grund, dass Sie die Ausnahme haben. Versuche einen Weg zu finden, damit umzugehen.

+0

Ich weiß, es ist aber, wie das zu lösen? –

+0

Sind Sie für die Serverseite verantwortlich? –

+0

nein, ich kann nicht in Server –

0

können Sie überprüfen, wo Schlüssel vorhanden ist oder nicht hat() -Methode. unten ist der Code aussehen wie

for (int i = 0; i < innerProjectarray.length(); i++) 
    { 

    JSONObject obj=innerProjectarray.getJSONObject(i); 

    if(obj.has("PROJECT_NUMBER")) 
    { 
     Log.i("Project Number ",obj.getString("PROJECT_NUMBER")); 
    } 
    else 
    { 
     Log.i("Project Number ","No Such Tag as PROJECT_NUMBER"); 
    } 

    if(obj.has("PROJECT_NAME")) 
    { 
     Log.i("Project Name ",obj.getString("PROJECT_NAME")); 
    } 
    else 
    { 
     Log.i("Project Name ","No Such Tag as PROJECT_NAME"); 
    } 

} 

ich oben Code Hilfe hoffen, dass Sie Ihr Problem

2

// aufzulösen Denn wenn der Parameter oder die Variable nicht in der JSON-Objekt vorhanden ist, wird es nicht weiter Code ausführen und werfen Ausnahme so ist es besser, zu verwenden wie:

try { 

      JSONObject data = coupon; 



       if(data.has("event_recurring_text")) { 

        if ("".equals(data.getString("event_recurring_text"))) { 

         bundle.putString("event_time", data.getString("event_recurring_text")); 

        } else { 

         bundle.putString("event_time", data.getString("event_time")); 
        } 
       } 
      }// end if 



     } catch (JSONException e) { 

      Log.i("Handler 4","JSONException: Handled");    
      e.printStackTrace(); 
     } 

// Hier data.has() Methode überprüft, ob die Variable existiert oder nicht in oject

// vKj

0

Ich hoffe, diese Antwort wird jemandem helfen, diese Art f-Problem zu haben, in meinem JSONarray-Namen haben Leerzeichen innerhalb Anführungszeichen, so dass der leere Raum als ein Zeichen betrachten. Dies ist eine Art API-Problem. bessere Anforderung, den Platz zu entfernen, sonst wird der Entwickler leiden.

"jobtype ": [ 
     { 
     "id": "1006", 
     "name": "Apprenticeship" 
     } 
    ] 

LogCat: Ausnahme org.json.JSONException: Kein Wert für

0

for (int i = 0; i < innerProjectarray.Länge(); i ++) {

JSONObject jobject = innerProjectarray.getJSONObject(i); 
if (jobject .has("PROJECT_NUMBER")) { 
    String strnumber = jobject .getString("PROJECT_NUMBER"); 
} 

if (jobject .has("PROJECT_NAME")) { 
    String strname= jobject .getString("PROJECT_NAME"); 
} 

}

0

Try this:

if (jsonObjectLeft.has("Left")) { 

        if (jsonObjectLeft.getJSONArray("Left") != null && 

jsonObjectLeft.getJSONArray("Left").length() > 0) { 

         jsonArrayLeft.put(jsonObjectLeft); 

         jsonObject.put("12", jsonArrayLeft); 

        } 

       }