【问题标题】:List array deseralization with JavaScriptSerializer() fails使用 JavaScriptSerializer() 的列表数组反序列化失败
【发布时间】:2018-02-18 13:25:44
【问题描述】:

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

没有成功

(不能隐式转换类型 'System.Collections.Generic.List' 到 'Redacted.Redacted.LoginReply')

【问题讨论】:

  • 发布收到的 JSON

标签: c# json list deserialization json-deserialization


【解决方案1】:

问题出在这里:

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

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

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

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

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

【讨论】:

  • 谢谢,我想凌晨 3 点不再为我编程了
  • ?? 很高兴它有帮助
猜你喜欢
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-27
  • 2018-03-03
相关资源
最近更新 更多