使用 JavaScriptSerializer() 列表数组反序列化失败

List array deseralization with JavaScriptSerializer() fails

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

这是我的 class:

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);

没有任何成功

(Cannot implicitly convert type 'System.Collections.Generic.List' to 'Redacted.Redacted.LoginReply')

问题出在这里:

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

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

对于第一次尝试,我们必须看到分配给 loginRespose 变量的 json,因为它可能为 null 或无效 json 或者不具有 LoginReply class。

如果 json 像 LoginReplys 的列表一样出现,您可能必须将其反序列化为这个 class 的列表,如下所示:

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