0

我正在编写我的第一个 android 应用程序,并且在将 Json 数据解析回 POJO 方面的经验非常有限。我正在使用 GSON,它的方法来自 Json()。它在某种程度上起作用,但并非所有课程都已完成。

我正在序列化的课程是

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>();
}

是否可以将 User 解析为一个名为 User. 但是将用户列表放入另一个名称不同且参​​数少得多的类中

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();

I haven't tested this but it should work. Note that when you deserialize your users won't have any of their friends or matches fields filled in. You can reconstruct that from the graph in a post-processing step. Or use GraphAdapterBuilder to do it automatically.

于 2012-06-10T04:03:16.623 回答