Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.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 有一种方法可以知道json代表哪种类型?_Java_Json_Gson - Fatal编程技术网

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

Java 有一种方法可以知道json代表哪种类型?,java,json,gson,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)

假设我有两个对象: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");
}
它不满足任何条件(不是请求启动的
实例
,也不是人员的
实例

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


提前谢谢。

不,没有办法直接知道

这是因为JSon文件中包含的信息不直接包含任何关于在其中序列化的对象的类型信息。这就是为什么在读取JSon文件时通常提供该类,如

fromJSon(myObject, MyClass.class)

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

不,我认为没有办法。可能有一个解决方法是使用json标记来表示对象的类型。您看过指南了吗?这可能会有帮助:这不是这个问题的一个变体吗?