Unity3D JSON反序列化空列表?

时间:2018-12-11 00:13:15

标签: json unity3d

我有一个返回空白列表(仅[])的Web服务。

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 Web服务)和客户端(Unity3D)。

1 个答案:

答案 0 :(得分:1)

来自this thread

  

您不能将JsonUtility直接用于List之类的类型,而必须将其与已定义的类或结构类型一起使用

因此您的第二次尝试将无法进行。如果您说的是FriendManager.FriendList类型的,则也不能直接将其分配给List<Friend>

例如,您需要一个包装器类,例如

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

使FriendManaget.FriendList类型的FriendList

服务器或您都必须将字段名称附加到该数组,即变量名称:Friends例如喜欢

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

或者服务器必须发送

"Friends":[]