使用 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);
我有一个 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);