2011-10-25 10 views
1

gsonでオブジェクトツリーをシリアル化する必要があります。それは正常に動作しますが、私はツリー全体を転送したくありません。特に私は子オブジェクトへのリンクを生成したい。オブジェクトツリー全体のシリアル化ではなく、GSONを使用したリンクの生成

class BookStrore { 
    public String name; 
    public List<Book> books; 
} 

class Book { 
    public int id; 
    public String name; 
} 

のようなものにつながる本屋のインスタンスをシリアル化:例:

{ name: 'bookStoreName', 'books': [ book: 'http://example.com/book/3', ... ] } 

は、誰もがどのように知っています:

{ name : 'bookStoreName', 'books' : [ { id: '3', name: 'blubb' }, ... ] } 

しかし、のようなリンクを持つようにしたいですGSONでこれを達成するには? 私はGSONに固執していません。誰かが別の解決策を持っているなら、それは歓迎です。

答えて

0

おかげで答えの部分を見つけることができると思います。それは別の視点から問題を再考させました。 「BookStore」に書籍のリストがあると主張すると、参考文献のリストではなく書籍のリストがなければならないので、問題が私のアプローチの範囲内にあることを最後に認識しました。もちろん、Javaでは、書籍のリストも参考文献のリストです。だから私はプロキシを生成することができます。このためには、シリアライザ/デシリアライザを変更する必要があります。しかし、これはデフォルトの、私の場合はjava、プログラミングモデルに違反します。別のアプローチは、特別なデータ転送オブジェクトを作成するために、システムが独立しているので、私が好むものです。この場合、BookLinksを使用して、BookStoreクラスにBookLinkのリストが含まれるようにします。私はそれが何であるか、リンクではなく物体であることを明らかにするので、正しい方法だと思う。

関連する問題