2012-04-30 6 views
0

사람과 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 파일에 포함 된 정보가 거기에 직렬화 된 객체에 대한 유형 정보를 직접 포함하지 않기 때문에. 당신은 일반적으로 클래스를 제공하는 이유

fromJSon(myObject, MyClass.class) 

이에서와 같이 JSON 파일을 읽을 때 그것은 참으로 임의의 유형 또는 genericized 개체의 집합을 읽어도 문제 생성합니다.

관련 문제