从包含C#Unity中不同对象类型的JSON数组中读取

时间:2017-07-02 20:42:41

标签: c# json unity3d deserialization

我从我的服务器收到一个JSON数组到我的Unity游戏客户端。该数组包含不同类型的游戏对象,换句话说,在一个数组中有不同的类型的对象。

 {someArrayOfDifferentObjects:[{name:"bla", element:"ITEM"},{name:"blu",element:"ITEM"},{name:"blu",health:0, element:"ENEMY"}]}

我尝试完成的是在for循环中为目标对象获取正确的对象类型:

private IEnumerator WaitForRequest(WWW www)
{
    yield return www;

    ResponseObject gameObjects= JsonUtility.FromJson<ResponseObject >(www.text); // from server
    object[] base = gameObjects.someArrayOfDifferentObjects;
    foreach (object obj in base )
    {
    ParentObject parent = (ParentObject ) obj;
    if (parent.element == "ITEM")
    {
    Item item = obj as Item; // throws NullReferenceException: Object reference not set to an instance of an object
    } else { // other elements}
    }
}

    {
     [Serializable]
        public class ParentObject
        {
          public string element;
        }
    }

 {
     [Serializable]
        public class Item : ParentObject
        {
          public string name;

        }
    }

它尝试了一些事情,并在互联网上寻找解决方案,但无法找到任何与c#统一起作用的东西。 我知道这个问题可能过于复杂,但此刻我有点陷入困境。

anybode可以快速提示我正确的方向吗?

问候,

Codehai

0 个答案:

没有答案