Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
Java 基于另一个字段对字段进行条件反序列化';s值_Java_Android_Json_Gson - Fatal编程技术网

Java 基于另一个字段对字段进行条件反序列化';s值

Java 基于另一个字段对字段进行条件反序列化';s值,java,android,json,gson,Java,Android,Json,Gson,我有这个JSON模型: { state (int), result (object) } 结果可能包含以下模型之一: public class Person { someField; } public class Book { someOtherFields; } 我的意思是,我正在寻找一种方法来做到这一点: if(result.state == 1) then deserialize result as a Person else if(resul

我有这个JSON模型:

{
    state (int),
    result (object)
}
结果可能包含以下模型之一:

public class Person {
    someField;
}

public class Book {
    someOtherFields;
}
我的意思是,我正在寻找一种方法来做到这一点:

if(result.state == 1)
    then deserialize result as a Person
else if(result.state == 2)
    then deserialize result as a Book
else throw exception;

我不是JAVA或Android的人。这只是我陷入的一个糟糕的境地。您知道如何在Android应用程序中使用GSON lib实现这一点吗?

您可以使用cutom反序列化器实现这一点

如果
Book
Person
具有名为
Element
的父类,则可以创建此反序列化器(未测试)

然后使用

Element element= gson.fromJson(jsonInput, Element.class); 

自定义反序列化程序会这样做
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Element.class, new CustomDeserializer());
Gson gson = gsonBuilder.create();
Element element= gson.fromJson(jsonInput, Element.class);