【问题标题】:C# JavaScriptSerializer json array deserializationC# JavaScriptSerializer json 数组反序列化
【发布时间】:2012-09-20 18:18:43
【问题描述】:

代码:

string json = "[{\"Name\" : \"dan\", \"Age\" : 25, \"City\" : \"lllal\", \"About\" : \"im dan\", \"Bdate\" : \"26/06/1997\"}]";

JavaScriptSerializer ser = new JavaScriptSerializer();
List<Person> ncontacts = ser.Deserialize<List<Person>>(json);

foreach (Person person in ncontacts)
    listView1.Items.Add(person.Name);

人员类别:

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
    public string About { get; set; }
    public DateTime Bdate { get; set; }
}

问题是列表视图保留 0 个项目,即使它应该有 dan

我尝试调试并在foreach 行上设置了一个断点,但奇怪的是它永远不会到达该行。如果我在断点前的一行设置一个断点。

欢迎任何帮助, 丹

【问题讨论】:

  • 反序列化调用后ncontacts的内容是什么?
  • 当我在该行放一个断点时,它显示它是null
  • 如果为空,则反序列化不起作用。你有任何错误吗?

标签: c# json arraylist arrays javascriptserializer


【解决方案1】:

您的日期字符串26/06/1997 的反序列化格式无效,并且您的代码出现异常。如果您将public DateTime Bdate { get; set; } 替换为public string Bdate { get; set; },您可以看到它正在工作。

【讨论】:

  • 这不取决于他的语言环境吗?
  • 如何更改日期字符串以适应反序列化的有效格式而不是更改属性?
  • @justnS 不,那么必须根据接收者的语言环境进行序列化。
  • 现在是 \"Bdate\" : \"Date(1348865672139)\" 但仍然无法正常工作:/
  • @DanBarzilay 您的字符串不包括/s。 (您在转义特殊字符时遇到问题。)试试这个 string json = @"{""Name"":""dan"",""Age"":25,""City"":""lllal"",""About"":""im dan"",""Bdate"":""\/Date(1348866103586)\/""}";
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 2021-12-16
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多