我正在尝试编写一个接受对象的方法,该方法将使用Unity JsonUtility或JsonHelper并返回该对象的序列化版本。当我运行以下调试代码时,一切正常。
object t = new List<Player>
{
new Player
{
Name = "asdf",
ID = Guid.NewGuid().ToString()
}
};
if (t is IEnumerable<Player> list)
Debug.Log(JsonHelper.ToJson(list.ToArray()));
//Result {"Items":[{"ID":"eff6ca08-b464-4e57-9f2e-f49a0cb869ff","Name":"asdf"}]}
但是,我的实际方法没有返回相同的东西。
public void SeriailizeObject<T>(T obj)
{
if (obj is IEnumerable<T> list)
{
Debug.Log(JsonHelper.ToJson(list.ToArray()));
//Result {}
}
...
有人知道您是否可以使用Unity的JsonUtility序列化通用列表?
[调用SeriailizeObject(new List<Player>())
时,typeof(T)
等于List<Player>
,并且obj
等于不是和IEnumerable<List<Player>>
。
[调用SeriailizeObject(t)
时,typeof(T)
等于object
,并且obj
是IEnumerable<object>
(假定t
是List<Player>
)。