我正在尝试使用 Unity 5.3.2 中包含的新 JSONUtility 来序列化包含作为基类后代的对象的对象。这是一个例子:
[Serializable]
public class Class1
{
public int class1Field = 1;
public Class2 attributes = new Class3();
}
[Serializable]
public class Class3 : Class2
{
public int class3Field = 3;
}
[Serializable]
public class Class2
{
public int class2Field = 2;
}
如果我这样做:
Class1 myClass = new Class1();
Debug.Log(JsonUtility.ToJson(myClass));
输出是:
{"class1Field":1,"attributes":{"class2Field":2}}
如您所见,Class3 中的任何内容都没有被序列化。有趣的是,如果我这样做:
Debug.Log(JsonUtility.ToJson(myClass.attributes));
输出是:
{"class2Field":2,"class3Field":3}
这是我所期望的。我知道我可以使用 string.Format 做一个非常简单的解决方法,但是有没有更优雅的解决方案来解决这个问题?我可能没有正确使用 JSONUtility 吗?还是 JSONUtility 目前根本不支持这一点?
我正在研究此功能,因为我正在使用反射生成一个对象(在本示例中它将替换“Class3”),然后序列化反射对象所属的顶级对象。
需要明确的是,我想要的输出是:
{"class1Field":1,"attributes":{"class2Field":2,"class3Field":3}}