首页 > 解决方案 > Unity 3D:反序列化时出现 JSON 错误:ArgumentException:JSON 必须表示对象类型

问题描述

我正在使用以下内容:

[System.Serializable]
public class Choice
{
public string choice;
public int votes;
}

[System.Serializable]
public class RootObject
{
public string question;
public string published_at;
public List<Choice> choices;
}

反序列化以下 JSON:

[ {“问题”:“最喜欢的编程语言?”,“published_at”:“2015-08-05T08:40:51.620Z”,“选择”:[{“选择”:“斯威夫特”,“投票”:2048 } ,{“选择”:“Python”,“投票”:1024 },{“选择”:“Objective-C”,“投票”:512 },{“选择”:“Ruby”,“投票”:256 } ] } ]

我在控制台中收到此错误消息:ArgumentException:JSON 必须表示对象类型。请告诉我我做错了什么。

标签: jsonunity3djson-deserializationjson-serialization

解决方案


您的 json 以 an 开头[并以 a 结尾,]这表明它是一个数组,而不是一个对象。

当您尝试将其反序列化为对象根对象时,它会失败,因为它期望使用{and进行对象注释}

您可以通过将数组更改为对象来解决此问题。或者通过将其反序列化为数组。

您可以在此答案中找到一些示例和更多解释:Serialize and Deserialize Json and Json Array in Unity


推荐阅读