反序列化时,Unity 3D:JSON错误:ArgumentException:JSON必须表示对象类型

时间:2019-04-03 07:22:00

标签: json unity3d json-deserialization json-serialization

我正在使用以下内容:

[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:

  

[       {           “ question”:“最喜欢的编程语言?”,           “ published_at”:“ 2015-08-05T08:40:51.620Z”,           “选择”:[               {                   “ choice”:“ Swift”,                   “票数”:2048               },{                   “ choice”:“ Python”,                   “票数”:1024               },{                   “ choice”:“ Objective-C”,                   “票数”:512               },{                   “ choice”:“ Ruby”,                   “票数”:256               }           ]       }   ]

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

1 个答案:

答案 0 :(得分:0)

您的json以<div ng-show="element['ServerValidationFailed']==&quot;0&quot;"></div> 开头,以[结尾,这表明它是一个数组,而不是对象。

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

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

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