2011-06-24 4 views
2

に変数の型を持つオブジェクトの解析、私は次のようなJSON文字列のようなものを持っています。ある型は文字列と整数を含み、もう一方の型は文字列と別の文字列を含みます。はgson

どうすればこの問題に対処できますか?

+0

2番目の変数を整数にすると、「グループA」タイプのオブジェクトだけを「使用」していても、「グループB」タイプのオブジェクトの解析中にエラーが発生します(つまり、この配列の最初の要素)。私は最初の要素は常にgroupA要素を持っていることを完全に確信していますが、すべての要素を解析する必要があると思います。 – Karan

答えて

0

申し訳ありません、もともとあなたは "gson"と書いてありませんでした。私はあなたがそれを行うことができるかどうかは分かりません、そしてここにはnot me saying itです。

+0

どうやらあなたはできます:http://code.google.com/p/google-gson/source/browse/trunk/extras/src/main/java/com/google/gson/extras/examples/rawcollections/RawCollectionsExample.java – Karan

+0

明らかにできます。 :)幸運... – Amadan

+0

RawCollectionsExampleは、多態的な直列化解除の例ではありません。これは、私がこの方法にアプローチする方法です。 –

0

List myStrings = new ArrayList(); 
    myStrings = gson.fromJson(json,myStrings.getClass()); 

    Iterator myIterator = myStrings.iterator(); 
    boolean b; 
    while(myIterator.hasNext()){ 
     Object o =myIterator.next(); 
     b=o instanceof String; 

     System.out.println("...."+b); 
    } 
0

私のアプローチは、おそらく多型直列化復元ソリューションを実装することであろうようにいくつかのことを行います。

Gsonは現在、カスタムデシリアライズ処理を実装する以外に、多態的なデシリアライズのための単純なメカニズムを持っていません。次のリリースでは、組み込みのソリューションを提供するように見えます。このトピックの

前StackOverflow.comの質問と回答(例といくつかの):

元の質問に具体的な、それは "グループ"のように見える異なるタイプを区別するために使用されます。

FWIW、Jackson多くの月前にa built-in solution to this problemがリリースされました。