2017-07-29 10 views
1

あるソケットから別のソケットにオブジェクトを送信する必要があります。シリアル化にJSONを使用したいと思います。 すべてのjsonオブジェクトはそのタイプを格納する必要があります。私の計画は私のオブジェクトをラップすることでした:jsonのGsonストアオブジェクトタイプ

{ 
    /* the type */ "_type_": "my.package.MyClass", 
    /* the actual object */ "_data_": { 
     ... 
    } 
} 

、何かを私は理論的には、この連載のアダプタに

​​

を書くことで、これを実装しようとした、これは動作しますが、私はネストされたオブジェクトをシリアル化しようとすると、それが失敗しましたこの

​​

のような唯一のMyTypeは、ラップされ、その結果、JSONは次のようになりますので:

{ 
    "__type__": "my.package.MyType", 
    "__data__": { 
     (No "__type__" field here...) 
     ... 
    } 
} 

オブジェクトを次のような型でシリアル化できますか?

+0

[Gson - フィールド値に基づいて特定のオブジェクトタイプに非直列化](https://stackoverflow.com/questions/21767485/)と同様の問題を解決しようとしているようです。それを確認して、現在の問題が重複しているかどうかをお知らせください。 –

+1

@SergeyBrunovは本当にありません。私はすべての型のために働く解決策が必要です/どの型がシリアル化されるかわかりません... – NyxMC

+0

良い、私はポイントを参照してください。あなたはこれらのものを見てみることができますか:[java - Gsonと直列化するときにクラス名を公開する方法](https://stackoverflow.com/questions/19129711)、[java-gson - 直列化の際のクラス名プロパティを含める方法任意のタイプのオブジェクト](https://stackoverflow.com/questions/39999278)? –

答えて

0

This answerは、この問題の解決方法を説明しています。 GsonではなくGensonが代わりに使用されます。私はGensonがPojosをどう扱うか本当に好きではないが、私はそれで生きなければならないと思う。

+0

GesnonがPojosを扱う方法であなたは気に入らないのですか?これはGsonやJacksonがどのように扱うかと非常によく似ています。 – eugen