2012-04-30 51 views
0

比方说,我有两个对象:Person和ReqSingUp,ReqSingUp包含Person。有一种方法可以知道json代表了哪种类型?

现在,如果我尝试:

Person p=new Person("dan","lala"); 
ReqSingUp reqSingUp=new ReqSingUp(p); 
String s = gson.toJson(reqSingUp,ReqSingUp.class); 
Object o = gson.fromJson(s, Object.class); 

if (o instanceof ReqSingUp) { 
    System.out.println("it's ReqSingUp"); 
} 
if (o instanceof Person) { 
    System.out.println("it's person"); 
} 

它不符合任何条件(不instanceof ReqSingUp而不是instanceof Person)。

有没有办法知道它是哪种类型?

在此先感谢。

+0

不,我认为没有办法。可能是一个工作是使用json标记之一来表示对象的类型。 – kosa

+0

你看过导游吗?这可能有所帮助:https://sites.google.com/site/gson/gson-user-guide#TOC-Serializing-and-Deserializing-Collection-with-Objects-of-Arbitrary-Types – TJR

+0

这不是一个变体这个问题? http://stackoverflow.com/questions/3629596/deserializing-an-abstract-class-in-gson –

回答

2

不,没有办法直接知道它。

这是因为JSon文件中包含的信息不直接包含任何有关在那里序列化的对象的类型信息。这就是为什么你通常会提供类阅读JSON文件时,如

fromJSon(myObject, MyClass.class) 

这确实创建阅读任意类型或泛型化对象的集合,即使问题。

相关问题