有一种方法可以知道json代表哪种类型?

时间:2012-04-30 19:11:26

标签: java json gson

假设我有两个对象:Person和ReqSingUp,ReqSingUp包含Person。

现在,如果我尝试:

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)。

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

提前致谢。

1 个答案:

答案 0 :(得分:2)

不,没有办法直接了解它。

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

fromJSon(myObject, MyClass.class)

即使在读取任意类型或通用对象的集合时,这确实会产生问题。