7

注意:我发布了一个类似的问题,这是这个问题的祖先,因为我最初想使用 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 <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; }
    }
4

1 回答 1

8

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

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

实际代码有什么不同吗?

json字符串在哪里 - 随意替换为ReadToEndetc;或使用WebClient.DownloadString更简单的)

于 2009-09-20T07:48:12.160 回答