使用Messagepack进行序列化

时间:2012-06-19 09:09:32

标签: java serialization deserialization msgpack messagepack

我喜欢使用Messagepack序列化我的java类对象。我的班级结构是这样的

public class A
 {
   private InnerClass obj;
   //Some other variables with getters and setters.
   // There will be a getter and setter for obj(InnerClass) aswell.
 }
 class InnerClass
 {
  //Some variables with getters and setters.
 }
 class InnerDerivedClass extends InnerClass
 {
  //some variables with getters and setters.
 }

我喜欢做的是为InnerDerivedClass创建对象并为其指定一些值。然后我将对象添加到类A作为基类对象。现在,当我使用Messagepack序列化和反序列化A类对象时,我无法将对象作为InnerDerivedClass对象获取,而是将其作为InnerClass obj。如何使用MessagePack实现此目的。我没有使用任何注释,而是在messagepack中注册每个类。

2 个答案:

答案 0 :(得分:0)

我查看了MessagePack的文档和示例,我找不到有关嵌套序列化的任何内容,只有简单类型和地图。

我建议您使用GSON解决问题 1)Java - Gson parsing nested within nested 2)Deserializing arbitrary object json arrays in inner classes with Gson or nested inner class

您可以尝试使用JSON-SIMPLE。它会将您的类表示为嵌套的Maps https://code.google.com/p/json-simple/wiki/MappingBetweenJSONAndJavaEntities

答案 1 :(得分:0)

对于嵌套结构,我建议FlexJson;你可以避免所有与嵌套结构相关的样板代码:

A obj1 = new A()
String json = JSONSerializer().deepSerialize(obj1);

//get back
A obj2 = JSONDeserializer<A>().deserialize(json);