我正在编写我的第一个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的类。但用户列表为另一个具有不同名称且参数少得多的类
答案 0 :(得分: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自动执行此操作。