Unity3D JSON десериализует пустой список? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть веб-сервис, который возвращает пустой список (просто []).

JsonUtility.FromJson дает мне

ArgumentException: JSON должен представлять тип объекта.

Я выделил это на небольшой фрагмент кода, такой как:

string empty = "[]";
FriendManager.FriendList test = JsonUtility.FromJson<FriendManager.FriendList>(empty);
Assert.IsNotNull(test);

FriendList - это просто оболочка для Friend[].Я также пытался List<Friend>:

string empty = "[]";
FriendManager.FriendList test = JsonUtility.FromJson<List<Friend>>(empty);
Assert.IsNotNull(test);

Я что-то упустил очевидное?

У меня есть контроль над данными сервера (веб-служба Spring Boot JSON) и клиентом (Unity3D).

1 Ответ

0 голосов
/ 11 декабря 2018

Из этой цепочки

Вы не можете использовать JsonUtility с типом, подобным List, напрямую, вы должны использовать его с определенным классом или структурным типом

, поэтому ваша вторая попытка не сработает.И вы также не можете напрямую присвоить его FriendManager.FriendList, если он имеет тип List<Friend>, как вы сказали.

Вам скорее нужен класс-обертка для него, например,

[Serializable]
public class FriendList
{
    public List<Friend> Friends = new List<Friend>();
}

make FriendManaget.FriendList типа FriendList

И чем либо сервер, либо вы должны добавить имя поля к этому массиву, а именно имя переменной: Friends например, как

FriendManager.FriendList test = JsonUtility.FromJson<List<Friend>>("\"Friends\":" + empty);

или сервер должен отправить

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