使用JavaScriptSerializer()的列表数组解除失败

时间:2017-09-10 01:15:51

标签: c# json list deserialization json-deserialization

我有一个JavaScriptSerializer(),它可以从Web服务反序列化JSON,并且由于对列表的错误处理而在运行时失败。

这是我的班级:

public class LoginReply
{
    public Userdata userdata { get; set; }
    public List<string> errors { get; set; }
}

public class Userdata
{
    public string username { get; set; }
    public string section{ get; set; }
    public string avatar { get; set; }
    public string description { get; set; }
    public string authkey { get; set; }
}

我用以下方法来消除:

LoginReply reply = new JavaScriptSerializer().Deserialize<LoginReply>(loginRespose);

我也尝试过:

LoginReply reply = new JavaScriptSerializer().Deserialize<List<LoginReply>>(loginRespose);

没有任何成功

  

(不能隐式转换类型   &#39; System.Collections.Generic.List&#39;至   &#39; Redacted.Redacted.LoginReply&#39)

1 个答案:

答案 0 :(得分:1)

问题依赖于:

LoginReply reply = new JavaScriptSerializer().Deserialize<List<LoginReply>>(loginRespose);

您尝试将loginRespose反序列化为LoginReply列表,但在另一方面,您声明它不是列表。

对于第一次尝试,我们必须看到json被分配给loginRespose变量,因为它可能是null或无效的json,或者没有像LoginReply类这样的属性。

如果json像LoginReplys的列表一样,您可能需要将其反序列化为此类的列表,如下所示:

List<LoginReply> reply = new JavaScriptSerializer().Deserialize<List<LoginReply>>(loginRespose);