Error org.json.JSONException: для PROJECT_NAME нет значения Это мой json

Я получаю ошибку org.json.JSONException: Нет значения для PROJECT_NAME Это мой 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"
         }
        ]

    }

и треска:

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

Есть ли способ найти ключ, если ключ не существует, тогда np нужно получить значение od конкретной строки Помогите мне поблагодарить

Ответ 1

Используйте has, чтобы проверить, присутствует ли ключ в Json. Он возвращает true, если этот объект имеет сопоставление для имени.

like

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

Другой способ - использовать optString, который возвращает значение, отображаемое по имени, если оно существует, при необходимости принудительное. Возвращает пустую строку, если такое отображение не существует.

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. 
}

Ответ 2

//Поскольку если параметр или переменная не существует в объекте JSON, он не будет выполнять дополнительный код и исключение исключения, поэтому его лучше использовать, например:

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

//Здесь метод data.has() проверяет, существует или нет переменная в oject

//vKj

Ответ 3

   {
        "PROJECT_NUMBER": ""
     },

Здесь у вас есть только "PROJECT_NUMBER", причина у вас есть исключение. Попытайтесь найти способ справиться с этим.

Ответ 4

Вы можете проверить, где ключ существует или нет, используя метод(). ниже ваш код выглядит как

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

} 

Я надеюсь, что код выше поможет вам решить вашу проблему.

Ответ 5

Я надеюсь, что этот ответ поможет кому-то в этом вопросе. В моем имени JSONarray есть пространство в двойных кавычках, поэтому пустое пространство рассматривается как символ. это своего рода проблема API. лучший запрос на удаление пространства, иначе разработчик пострадает.

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

LogCat: exception org.json.JSONException: Нет значения для

Ответ 6

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

Ответ 7

Попробуйте следующее:

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

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

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

                        jsonArrayLeft.put(jsonObjectLeft);

                        jsonObject.put("12", jsonArrayLeft);

                    }

                }

Ответ 8

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