Unity-如何做JsonConvert.DeserializeObject

时间:2018-10-23 03:46:48

标签: c# json unity3d unityscript

我遇到了

这样的问题
  

要解决此错误,可以将JSON更改为JSON数组(例如[1,2,3]),也可以更改反序列化类型,使其成为普通的.NET类型(例如,不是整数之类的原始类型,而不是可以从JSON对象反序列化的集合类型(如数组或List<T>)。还可以将JsonObjectAttribute添加到类型中,以强制其从JSON对象反序列化。

我的json文件

{age : 20}

userinfo.cs

[System.Serializable]
public class UserInfo
{

public string age ;

[Newtonsoft.Json.JsonConstructor]
public UserInfo(string _age )
{
    age = _age ;


}}

main.cs

 public List<UserInfo>userInfoListw 
  userInfoListw = JsonConvert.DeserializeObject<List<UserInfo>>(Resources.Load<TextAsset>("User").ToString());

我知道解决方案之一可能是[{age : 20}], 但我真的不想将[]放入我的Json文件中, 请让我知道另一种解决方法。

1 个答案:

答案 0 :(得分:0)

  

我知道解决方法之一可能是[{age:20}],但我真的不想将[]放入我的Json文件中,请让我知道另一种解决方法

好吧,您正在将JSON数据反序列化为List对象。但是您的JSON数据实际上不是列表。

  

{age : 20}

如果将其反序列化为列表,则Newtonsoft的库将期望JSON中的集合(如您所指出的那样,使用数组括号)。所以它是一个列表,或者不是。您可以将其设为具有单个元素的集合-要求您将JSON包装在您不想使用的方括号中,也可以更改代码以免将其反序列化为List :

public UserInfo userInfow userInfow = JsonConvert.DeserializeObject<UserInfo>(Resources.Load<TextAsset>("User").ToString());