【问题标题】:Using System.Web.Script.Serialization.JavascriptSerializer to deserialize JSON - how to?使用 System.Web.Script.Serialization.JavascriptSerializer 反序列化 JSON - 如何?
【发布时间】:2009-09-20 07:26:14
【问题描述】:

注意:我发布了a similar question,这是这个问题的祖先,因为我最初想使用 JSON.NET 来解析 JSON,但我使用的是内置的反序列化器,所以它是另一个问题。

这就是我想要做的:例如,我有一个名为 Item 的类。 json 有许多“元素”(如果它们被称为 - 它们模仿 Item 类),每个包含 3 个字段:一个名为 id 的整数、一个名为 name 的字符串和一个名为 creationTime 的日期时间。我想将 json 中的所有这些 Item “元素”解析为 Item 对象列表。我在 Item 类中创建了 3 个字段来匹配 JSON。

这是我目前正在做的:

JavaScriptSerializer ser = new JavaScriptSerializer();          
List<Item> items = ser.Deserialize<Item>(new StreamReader(response.GetResponseStream()).ReadToEnd());

但是,这不起作用,因为我“无法将类型 'superapi.Item' 隐式转换为 'System.Collections.Generic.List&lt;superapi.Item>'”。因此,我不知道如何解决这个问题,因为 JSON 中有很多 Item 架构的元素。是否有可能在 foreach 循环中执行此操作,在 JSON 中找到每个反序列化的项目,将其添加到列表中,然后继续循环?我将尝试使用一些类似的代码来做到这一点,然后我会发布我的结果。

谢谢!

更新:这是一些 JSON 的样子:

[{
    "Id": 1,
    "Name": "First item name",
    "creationTime": "\/Date(1247258293690)\/"
},
{
    "Id": 2,
    "Name": "Second item name",
    "creationTime": "\/Date(1247088323430)\/"
}]

这就是我的 Item 类的样子:

public class Item
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime creationTime { get; set; }
    }

【问题讨论】:

  • 您的示例问题的 simplified 块的任何机会 - simplified 类和 simplified 示例 json?跨度>
  • @Marc 嗯,好吧...我会尝试这样做...你的类是指 Item 类吗?
  • @Marc 完成!我已经插入了示例 JSON 和类代码......哇!
  • 谢谢 - 这真的很有帮助。
  • @Marc 哇,谢谢!我昨天发布的关于做类似事情的问题,但使用 JSON.NET 并没有得到 1 个答案......谢谢你让我开心!

标签: c# .net json serialization javascriptserializer


【解决方案1】:

我尝试了您的示例 json / 类,以下工作正常:

List<Item> items = ser.Deserialize<List<Item>>(json);

实际代码有什么不同吗?

(其中json 是字符串 - 随意替换为ReadToEnd 等;或使用WebClient.DownloadString,更简单)

【讨论】:

  • 哦,呵呵!我一直将 ser.Deserialize 的 T 设置为 Item,但它是 List!愚蠢的我! ;) 现在就去试试。非常感谢!
  • @Marc 嗯,它在 Deserialize 调用上给了我一个 InvalidOperationException,说它无法将 null 转换为值类型...我将尝试进一步研究发生了什么。
  • @Marc 我认为正在发生的事情是它没有识别我的 Item 类中的属性,以及它们与 JSON 的关系。他们需要什么特殊属性吗?
  • @Marc 通过“实际代码有什么不同”,您的意思是我的 Item 类和 JSON 有点概括和简化吗?对此,答案是肯定的。但它应该仍然有效,因为 JSON 在结构上似乎是合理的。
  • @Marc 实际代码是一个用于 pre-alpha SO Api 的简单 .NET 库。我刚刚在 meta 上看到它,并且正在寻找机会以一种很好的方式来玩一些 json,所以我开始构建一个。别担心,我没有滥用它,因为我 stackoverflow.com/api/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
  • 2011-03-15
  • 2014-02-27
相关资源
最近更新 更多