Unity Json не может сериализовать общий список c - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь написать метод, который принимает объект и использует 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 {}
    }
    ...

Кто-нибудь знает, можете ли вы сериализовать обобщение c список с JsonUtility Unity?

1 Ответ

0 голосов
/ 25 марта 2020

При звонке SeriailizeObject(new List<Player>()), typeof(T) равно List<Player>, а obj равно , а не и IEnumerable<List<Player>>.

При звонке SeriailizeObject(t), typeof(T) равно object и obj является IEnumerable<object> (при условии, что t является List<Player>).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...