2011-07-11 1 views
0

シンプルなJSONのシリアライズで使用するクラスを用意しました。プリミティブとList <>型の両方を含むObjectを使用してJSONをシリアライズするにはどうすればよいですか?

public class Thing { 

    private int field1; 
    private String some_other_field; 
    private List<SubType> subs; 
    private list<AnotherType> another; 

    public String toJson() { 
    Gson g = new Gson(); 
    g.toJson(this); 
    } 
} 

だから、ドキュメントはあなたがジェネリック型をシリアル化したい場合、あなたはTypeTokenを指定する必要があることを示しています。その後、

Type listtype = new TypeToken<List<SubType>>() {}.getType(); 
gson.toJson(subs, listtype); 

しかし、私はクラス全体を持っている場合は、この作品は私がしたいんかシリアル化する?これらの2つのタイプのシリアル化タイプを指定するにはどうすればいいですか?オブジェクト全体を渡してシリアライズされた出力を得ることができますか?それも可能ですか?

答えて

1

docから、完全なオブジェクトをtoJson(...)でシリアル化すると、ジェネリック属性が適切に処理されるようです。

toJson(Object)

は、あなたがどのような出力が得られなかった「オブジェクトのフィールドのいずれかが、一般的なタイプである場合、このメソッドは、単にオブジェクト自体は、一般的なタイプであってはならない、正常に動作していることに注意してください」あなたの目的は?

+0

例外を投げていましたが、明らかに私はそれに間違ったことをしていました。それはダンディーを動作させるようだ...今私は最初の場所で問題を抱えていた理由が不思議です... –

関連する問題