0

私は最初の Android アプリを作成していますが、Json データを解析して POJO に戻す経験は非常に限られています。私は GSON を使用しており、その計算法は fromJson() です。ある程度は機能していますが、すべてのクラスが作成されているわけではありません。

私がシリアライズしているクラスは

public class User  extends Model
{
   public String id;
   public String name;
   public List<User> friends = new ArrayList<User>();
   public List<Match> matches = new ArrayList<Match>();
}

ユーザーをユーザーというクラスに解析することは可能ですか。ただし、ユーザーのリストは、名前が異なり、パラメーターがはるかに少ない別のクラスに

4

1 に答える 1

0

List の型アダプターを作成して登録します。作成は次のようになります。

private final TypeAdapter<List<User>> listOfUsersTypeAdapter = new TypeAdapter<List<User>>() {
    @Override public void write(JsonWriter out, List<User> value) throws IOException {
        out.beginArray();
        for (User user : value) {
            out.value(user.id);
        }
        out.endArray();
    }
    @Override public List<User> read(JsonReader in) throws IOException {
        in.beginArray();
        List<User> result = new ArrayList<User>();
        while (in.hasNext()) {
            User user = new User();
            user.id = in.nextString();
        }
        in.endArray();
        return result;
    }
}.nullSafe();

Gsonオブジェクトを作成するときに登録します。

    Gson gson = new GsonBuilder()
        .registerTypeAdapter(new TypeToken<List<User>>() {}.getType(), listOfUsersTypeAdapter)
        .create();

私はこれをテストしていませんが、動作するはずです。逆シリアル化すると、ユーザーの友達や一致するフィールドが入力されないことに注意してください。後処理ステップでグラフからそれを再構築できます。または、GraphAdapterBuilderを使用して自動的に実行します。

于 2012-06-10T04:03:16.623 に答える