2012-01-24 5 views
2

gsonの新しいバージョンでは、コレクションのデシリアライゼーションに関して多くの変更があります。 TypeTokenをJson Arrayから取得する前にTypeTokenを使用する前に、TypeTokenはライブラリに存在しなくなりました。今取るべきアプローチの例はありますか?...ドキュメントを見てきましたが、これについてはっきりしていません。それは、JsonDeserializerインターフェイスを実装することを提案し、GsonBuilderを使用して...もう一度それは明らかではありません。 Gsonを使用してコレクションをどのように非直列化することができるのか、誰かに例がありますか? ありがとうございました。Gsonデシリアライズコレクション

+0

あなたがしているバージョンをgsonを参照して?私はGsonの最近のバージョンにはまだ 'TypeToken'があると思います。 – Nikhil

+1

はい、申し訳ありませんが正しいです...私の混乱は、コンストラクタが2.1のjarで保護されていると宣言されたためです。次のコード行があります。TypeOfCollectionOfFoo = new TypeToken >()。} getType )はもはや機能しません。それは混乱でした。 – Pablo

+0

オハイオ州オケイ。下記の質問にお答えし、回答として記入してください。誰かを助けるかもしれない! – Nikhil

答えて

2

GoogleのGsonのバージョン2.1もはや代わりに、我々はそれが提供する静的メソッドのいずれかを使用する必要があり、TypeTokenクラスのpublicコンストラクタを持っています

IE:

List<MyClass> myList= new ArrayList<MyClass>(); 
Type listType = TypeToken.get(myList.getClass()).getType(); 
myList= (new Gson()).fromJson(jsonString, listType); 
+2

これは間違っています...この場合のlistTypeはjava.util.LinkedHashMapなので、JSONは各要素がそのクラスのインスタンスであるリストを作成します。もちろん、リストを反復するときにClassCastExceptionsを生成します。これを行う正しい方法は何ですか? GSONの2.1のバージョンにデフォルトのアクセスコンストラクタがある理由はありません。 – Pablo