Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Gson从json到不同的类_Android_Json_Gson_Pojo - Fatal编程技术网

Android Gson从json到不同的类

Android Gson从json到不同的类,android,json,gson,pojo,Android,Json,Gson,Pojo,我正在编写我的第一个android应用程序,在将Json数据解析回POJO方面的经验非常有限。我使用的是GSON,它的方法来自json。它在一定程度上起了作用,但并不是所有的课程都能完成 我正在序列化的类是 public class User extends Model { public String id; public String name; public List<User> friends = new ArrayList<User>();

我正在编写我的第一个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的类。但是,将用户列表放入另一个具有不同名称和更少参数的类中,为列表创建并注册一个类型适配器。创建它看起来像这样:

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 = new GsonBuilder()
        .registerTypeAdapter(new TypeToken<List<User>>() {}.getType(), listOfUsersTypeAdapter)
        .create();