C# 使用System.Web.Script.Serialization.JavascriptSerializer反序列化JSON-如何?

C# 使用System.Web.Script.Serialization.JavascriptSerializer反序列化JSON-如何?,c#,.net,json,serialization,javascriptserializer,C#,.net,Json,Serialization,Javascriptserializer,注意:我发布了,这是这个问题的始祖,因为我最初考虑使用JSON.NET解析JSON,但我使用的是内置的反序列化程序,所以这是一个不同的问题 这就是我要做的:例如,我有一个名为Item的类。json有许多“元素”(如果它们被称为元素的话——它们模仿Item类),每个包含3个字段:一个名为id的整数、一个名为name的字符串和一个名为creationTime的datetime。我想将json中的所有这些项“元素”解析为项对象列表。我在Item类中创建了3个字段来匹配JSON 这就是我目前正在做的:

注意:我发布了,这是这个问题的始祖,因为我最初考虑使用JSON.NET解析JSON,但我使用的是内置的反序列化程序,所以这是一个不同的问题

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

这就是我目前正在做的:

JavaScriptSerializer ser = new JavaScriptSerializer();          
List<Item> items = ser.Deserialize<Item>(new StreamReader(response.GetResponseStream()).ReadToEnd());
这就是我的Item类的外观:

[{
    "Id": 1,
    "Name": "First item name",
    "creationTime": "\/Date(1247258293690)\/"
},
{
    "Id": 2,
    "Name": "Second item name",
    "creationTime": "\/Date(1247088323430)\/"
}]
public class Item
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime creationTime { get; set; }
    }

我尝试了您的示例json/class,下面的工作很好:

List<Item> items = ser.Deserialize<List<Item>>(json);
List items=ser.Deserialize(json);
实际代码有什么不同吗


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

有没有可能出现简化的示例问题块-简化的类和简化的示例json?@Marc um,好的。。。我会努力做到这一点。。。“类”是指物品类吗?@Marc done!我已经插入了示例JSON和类代码。。。哇!谢谢-这真的帮了大忙。@Marc哇,谢谢你!我昨天发布的关于做类似事情的问题,但对于JSON.NET,没有得到一个答案。。。谢谢你让我开心!哦,糟了!我已经将ser.Deserialize的T设置为仅项目,但它是列表!愚蠢的我!;)我现在就去试试。非常感谢@Marc嗯,它在反序列化调用中给了我一个InvalidoOperationException,说它不能将null转换为值类型。。。我将尝试进一步了解发生了什么。@Marc我想发生的是,它没有识别我的Item类中的属性,以及它们与JSON的关系。他们需要什么特殊属性吗?@Marc by“实际代码有什么不同吗”,你是说我的Item类和JSON有点通用化和简化了吗?对此,答案是肯定的。但是它应该仍然可以工作,因为JSON在结构上似乎是合理的。@Marc实际的代码是一个简单的.NET库,用于前alpha SO Api。我只是在meta上看到了它,并且正在寻找一个以一种好的方式使用json的机会,所以我开始构建一个。别担心,我没有滥用它,因为我