16

我收到错误 org.json.JSONException: No value for PROJECT_NAME This is my 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 需要获取特定字符串的值 帮助我,谢谢

4

8 回答 8

58

使用必须检查 Json 中是否存在密钥。如果此对象具有名称映射,则返回 true。

喜欢

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. 
}
于 2013-09-27T05:33:32.090 回答
3

// 因为如果参数或变量不存在于 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

于 2014-02-11T11:36:28.423 回答
1

您可以使用 has() 方法检查密钥是否存在。下面是你的代码看起来像

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

} 

我希望上面的代码可以帮助您解决问题

于 2013-09-27T05:35:05.023 回答
1
   {
        "PROJECT_NUMBER": ""
     },

在这里你只有“PROJECT_NUMBER”,因为你有例外。尝试找到一种方法来处理它。

于 2013-09-27T05:25:09.670 回答
1
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");
    }
}
于 2016-09-30T10:15:34.560 回答
0

尝试这个:

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

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

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

                        jsonArrayLeft.put(jsonObjectLeft);

                        jsonObject.put("12", jsonArrayLeft);

                    }

                }
于 2017-02-25T06:41:47.980 回答
0

我希望这个答案能帮助遇到这种问题的人,在我的 JSONarray 名称中,双引号中有空格,所以空格被认为是一个字符。这是一种 API 问题。更好地要求删除空间,否则开发人员将受到影响。

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

LogCat:异常 org.json.JSONException:没有值

于 2016-09-22T14:50:41.147 回答
0
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");
    }
}
于 2019-06-07T04:45:21.110 回答