2017-07-29 98 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