我喜欢使用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中注册每个类。
答案 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);