2014-04-26 3 views
1

Моей JSON строка выглядит,Проблемы в разборе 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, данные поступают в нуле, код snippet Я пытался:

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 вложена как _string_? Мех? – fge

+0

Какую конкретную библиотеку вы используете? Какой клиент вы пытаетесь получить? Все они? – Jahed

+0

@Jahed org.json.simple, все из них –

ответ

1

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

1

Вам нужно будет разобрать 2 раза. ниже код не будет работать.
jsonObject.get ("userList"). Get ("user");

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

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

Замена последних трех строк простым циклом должна быть выполнена. См. Мое редактирование. – evanjdooner

Смежные вопросы