2012-05-31 1 views
1

Я здание веб-приложения клиент-сервер и застрял на этом:Gson и массивы

Я получаю массив пользователей «FriendsIDList:»:

"data":{ 
    "name":"anna", 
    "BirthDate":"2010-01-01", 
    "FriendsIDList":{ 
     "email":"[email protected]", 
     "email":"[email protected]" 
    } 
}} 

Без массива у меня нет проблема чтения данных:

GsonBuilder gb = new GsonBuilder(); 
gb.setDateFormat("yyyy-MM-dd"); 
gson = gb.create(); 
newUser= gson.fromJson(data, user.class); 

Как я могу прочитать этот массив? Я использую LinkedList в моем классе пользователя:

LinkedList FriendsIDList; 

ответ

0

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

Попробуйте определения вам список друзей собственности следующим образом:

LinkedList<Email> FriendList; 

И создать E-mail Класс:

public class Email { 
    private String email; 
} 
+0

Что это значит? – Nusha

+0

и когда следует использовать это? Должен ли я использовать последнюю строку? – Nusha

+0

Это означает, что вы должны предоставить тип данных, которые возвращаются из json. Если json возвращает список, вам нужно создать Type для списка и передать его в методе fromJson. – rizzz86

0

JSON spec говорит, что это:

Имя является строкой. Каждое двоеточие появляется после каждого имени, отделяя от имени. Одна запятая отделяет значение от следующего имени. Имена внутри объекта ДОЛЖНЫ быть уникальными.

К сожалению, Gson не поддерживает неисторические имена в парах имя/значение. Поэтому он не может правильно обрабатывать свои свойства «электронная почта»:

{"email":"[email protected]","email":"[email protected]"} 

Вы можете работать вокруг этого, написав собственный TypeAdapter. Ваша реализация должна накапливать строки электронной почты в списке. Вероятно, вы захотите использовать специальный объект-оболочку в своей модели данных, например EmailAddressList, чтобы это стало проще.

static class FriendsIDList { 
    List<String> emails; 
} 

static TypeAdapter<FriendsIDList> friendsIDListAdapter 
     = new TypeAdapter<FriendsIDList>() { 
    ... // code to read and write emails 
}