我正在使用EMF-JSON来序列化EMF模型实例。问题在于,EObject的子类将被视为此类而不是子类。因此,当选择EObjectSerializer时,子类中的属性会在序列化过程中丢失。如何确保在不更改类本身的情况下包含子类的属性(请参阅包含注释)?在下面,您可以找到生成的接口。在这种情况下, ArithVar 类的 ref 属性不会被序列化。
public interface ArithExpr extends EObject {}
public interface ArithVar extends ArithExpr {
VarType getRef();
void setRef(VarType value);
}
public interface VarType extends EObject {}
有什么想法吗?
答案 0 :(得分:2)
默认情况下,引用被序列化为包含两个字段的JSON对象。第一个字段是引用对象的类型,第二个字段是引用对象的URI。类型字段名为eClass,而URI字段名为$ ref。
所以我的猜测是应该默认工作。您是否尝试过通过EObjectSerializer进行调试?我的猜测是它可能使用EMF反射API来遍历EObject的所有功能并将其序列化。