web-dev-qa-db-fra.com

error org.json.JSONException: Aucune valeur pour PROJECT_NAME Ceci est mon json

Je reçois le message d'erreur org.json.JSONException: aucune valeur pour PROJECT_NAME. Ceci est mon 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"
         }
        ]

    }

et la morue est:

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

Y a-t-il un moyen de trouver la clé si la clé n'existe pas, alors np doit obtenir la valeur od chaîne particulière Aidez-moi, merci

13
Sunil Kumar

Utilisez has pour vérifier si key est présent dans Json. Il renvoie true si cet objet est associé à name. 

comme 

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

Un autre moyen consiste à utiliser optString , qui renvoie la valeur mappée par son nom, le cas échéant, en forçant son passage. Renvoie la chaîne vide en l'absence d'un tel mappage.

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. 
}
51
Pankaj Kumar

// Parce que si le paramètre ou la variable n'existe pas dans l'objet JSON, il n'exécutera pas de code supplémentaire et lèvera une exception. Il est donc préférable de l'utiliser comme: 

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

// Ici la méthode data.has () vérifie si la variable existe ou non dans oject

// vKj

3
Vinod Joshi

Vous pouvez vérifier où la clé existe ou non en utilisant la méthode has () .. .. ci-dessous, votre code ressemble à

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

} 

J'espère que le code ci-dessus vous aidera à résoudre votre problème

1
javid piprani
   {
        "PROJECT_NUMBER": ""
     },

Ici, vous n’avez que "PROJECT_NUMBER", vous avez une exception Essayez de trouver un moyen de vous en occuper.

1
Lazy Ninja
for (int i = 0; i < innerProjectarray.length(); 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
Manish Dodiya

Essaye ça:

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

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

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

                        jsonArrayLeft.put(jsonObjectLeft);

                        jsonObject.put("12", jsonArrayLeft);

                    }

                }
0
Ashwin H

J'espère que cette réponse aidera quelqu'un à avoir ce type de problème. Dans mon nom JSONarray, l'espace entre guillemets, l'espace est considéré comme un caractère. c'est un peu le problème de l'API. meilleure demande pour supprimer l'espace sinon le développeur en souffrira.

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

LogCat: exception org.json.JSONException: Aucune valeur pour

0
MohanRaj S