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