1

私はクライアントサーバーのWebアプリケーションを構築していますが、これに固執しています:

ユーザーの配列「FriendsIDList:」を取得しています:

"data":{
    "name":"anna",
    "BirthDate":"2010-01-01",
    "FriendsIDList":{
        "email":"anna1@gmail.com",
        "email":"anna2@gmail.com"
    }
}}

配列がなければ、次のようなデータの読み取りに問題はありません。

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

この配列をどのように読み取ることができますか? 私はLinkedList自分のユーザークラスで使用しています:

LinkedList FriendsIDList;
4

2 に答える 2

0

JSON仕様には次のように書かれています。

名前は文字列です。各名前の後に1つのコロンがあり、名前と値を区切ります。単一のコンマは、値を次の名前から区切ります。オブジェクト内の名前は一意である必要があります。

残念ながら、Gsonは、名前と値のペアで一意でない名前をネイティブにサポートしていません。したがって、「email」プロパティを適切に処理できません。

{"email":"anna1@gmail.com","email":"anna2@gmail.com"}

独自のTypeAdapterを作成することで、これを回避できます。実装では、電子メール文字列をリストに蓄積する必要があります。これを簡単にするために、EmailAddressListなどのデータモデルで特別なラッパーオブジェクトを使用することをお勧めします。

static class FriendsIDList {
  List<String> emails;
}

static TypeAdapter<FriendsIDList> friendsIDListAdapter
        = new TypeAdapter<FriendsIDList>() {
    ... // code to read and write emails
}
于 2012-06-01T05:07:36.810 に答える
0

FriendList を含む単一のユーザーがいる場合、最後の行は前述のように機能します。

次のように FriendList プロパティを定義してみてください。

LinkedList<Email> FriendList;

そして、Email クラスを作成します。

public class Email {
  private String email;
}
于 2012-05-31T13:20:57.190 に答える