我有一个返回空白列表(仅[]
)的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)。
答案 0 :(得分:1)
您不能将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":[]