Проблема в разборе JSON String

1

Моя строка json выглядит,

{
    "userList" : {
        "user" : [{
                "Id" : "33",
                "userId" : "raji2",
                "customerId" : "35",
                "username" : "raji2",
                "status" : "1",
                "locked" : "0",
                "customAttributes" : "{\"uiPageId\":\"\",\"uiPageName\":\"\",\"uiPageViewMode\":\"Normal\"}",
                "addressList" : {
                    "address" : ""
                },
                "contactList" : {
                    "contact" : {
                        "contactno" : "+919526346097",
                        "email" : "[email protected]"
                    }
                },
                "roleList" : {
                    "roleId" : "7"
                },
                "privilegeList" : {
                    "privilegeId" : ["1", "10", "11", "12", "13", "14", "15", "16", "17", "23", "24", "25", "26", "27"]
                },
                "entityList" : {
                    "entityId" : ""
                }
            }, {
                "Id" : "34",
                "userId" : "raji3",
                "customerId" : "35",
                "username" : "raji3",
                "status" : "1",
                "locked" : "0",
                "customAttributes" : "{\"uiPageId\":\"\",\"uiPageName\":\"\",\"uiPageViewMode\":\"Normal\"}",
                "addressList" : {
                    "address" : ""
                },
                "contactList" : {
                    "contact" : {
                        "contactno" : "+919526346097",
                        "email" : "[email protected]"
                    }
                },
                "roleList" : {
                    "roleId" : "7"
                },
                "privilegeList" : {
                    "privilegeId" : ["1", "10", "11", "12", "13", "14", "15", "16", "17", "23", "24", "25", "26", "27"]
                },
                "entityList" : {
                    "entityId" : ""
                }
            }
        ]
    }
}

Когда я пытаюсь разобрать это, используя приведенный ниже пример и пытаясь принять электронную почту или customerId, данные идут как null. Снимки кода, которые я пробовал:

    JSONObject obj = (JSONObject) new JSONParser().parse(data);
    JSONObject jsonObject = (JSONObject) obj;
    System.out.println(jsonObject);
    String x=(String) jsonObject.get("customerId");
    System.out.println("Check Data"+x);

Я использовал простую библиотеку json. Я получаю нулевой ответ.

  • 0
    Хм, "customAttributes" - это объект JSON, встроенный в виде строки ? Мех?
  • 0
    Какую конкретную библиотеку вы используете? Какой идентификатор клиента вы пытаетесь получить? Все они?
Показать ещё 1 комментарий
Теги:

3 ответа

3

Как говорили другие комментаторы, вы не можете получить доступ к "customerId" непосредственно из корневого элемента. Вы должны пойти

root -> userList -> user -> user[0] -> customerId

Следующий код выполняет это

JSONObject obj = (JSONObject) new JSONParser().parse(data);
System.out.println(obj);
JSONObject userList = (JSONObject) obj.get("userList");
JSONArray user = (JSONArray) userList.get("user");
JSONObject userObj = (JSONObject) user.get(0);
String customerId = (String) userObj.get("customerId");
System.out.println("Check Data " + customerId);

Поскольку каждый пользовательский объект имеет свойство customerId, вы должны выбрать, какой пользовательский объект вы хотите использовать. Если вы хотите, чтобы вы использовали свой второй пользовательский объект, вы должны поставить user.get(1); на пятой линии.

EDIT Чтобы получить customerId для каждого пользователя, замените последние три строки на цикл:

JSONObject obj = (JSONObject) new JSONParser().parse(data);
System.out.println(obj);
JSONObject userList = (JSONObject) obj.get("userList");
JSONArray user = (JSONArray) userList.get("user");
for (Object userObj : user) {
    JSONObject userJSONObject = (JSONObject) userObj;
    String customerId = (String) userJSONObject.get("customerId");
    System.out.println("Check Data " + customerId);
}
  • 0
    Спасибо, наконец-то это сработало, но я заинтересован в получении всех customerId пользователей
  • 0
    Замена последних трех строк простым циклом должна сделать это. Смотрите мое редактирование.
1

Вам нужно будет разобрать 2 раза. ниже код не будет работать.
. JsonObject.get( "USERLIST") получить ( "пользователь");

попытайтесь получить доступ к самому большому элементу, используя один за другим.

1

Я не использую вашу библиотеку, но я думаю, вам нужно сначала получить поле "userList", а затем получить массив "user" и перебрать JSONObjects в массиве, чтобы получить соответствующий "customerId".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню