2012-04-30 9 views
0

私は2つのオブジェクトを持っているとしましょう: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

いいえ私は方法があるとは思わない。 1つの回避策は、オブジェクトの種類を表すjsonタグを使用することです。 – kosa

+0

ガイドを見ましたか?これは役立つ可能性があります:https://sites.google.com/site/gson/gson-user-guide#TOC-Serializing-and-Deserializing-Collection-with-Objects-of-Arbitrary-Type – TJR

+0

これはバリエーションではありませんこの質問の? http://stackoverflow.com/questions/3629596/deserializing-an-abstract-class-in-gson –

答えて

2

いいえ、直接知る方法はありません。

これは、JSonファイルに含まれる情報には、そこにシリアル化されているオブジェクトに関するタイプ情報が直接含まれていないためです。あなたは通常クラスを提供する理由

fromJSon(myObject, MyClass.class) 

これのように、JSONファイルを読み込むときには確かに、任意のタイプまたはgenericizedオブジェクトのコレクションを読んでも問題が作成されますです。

関連する問題