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

有没有什么办法find钥匙,如果钥匙不存在然后np需要得到值特殊的string帮助我谢谢

Solutions Collecting From Web of "错误org.json.JSONException:PROJECT_NAME没有值这是我的json"

使用必须检查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 ,如果它存在,则返回由名称映射的值,必要时强制它。 如果不存在这样的映射,则返回空string。

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

//因为如果参数或variables不存在于JSON对象中,它将不会执行进一步的代码并抛出exception,所以最好使用如下forms:

 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()方法检查variables是否存在到oject中

// vKj

  { "PROJECT_NUMBER": "" }, 

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

您可以使用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"); } } 

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

我希望这个答案会帮助有人有这样的问题,在我的JSONarray名称有双引号内的空间,所以空的空间考虑作为一个字符。 这是一种API问题。 更好的要求去除空间,否则开发人员将受到影响。

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

LogCat:exceptionorg.json.JSONException:没有值

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

}

尝试这个:

 if (jsonObjectLeft.has("Left")) { if (jsonObjectLeft.getJSONArray("Left") != null && jsonObjectLeft.getJSONArray("Left").length() > 0) { jsonArrayLeft.put(jsonObjectLeft); jsonObject.put("12", jsonArrayLeft); } }