C# DataContractJsonSerializer-反序列化到字典

C# DataContractJsonSerializer-反序列化到字典,c#,json,silverlight,datacontractjsonserializer,C#,Json,Silverlight,Datacontractjsonserializer,我想将作为REST查询(json字符串不能更改)结果得到的json反序列化为字典类型。 json字符串如下所示: { "collection": { "useful": true "attributes": { "ObjectID": "ObjectID", "Name": "Name", "FirstID": "FirstID", "LastID": "LastID", "Count": "5", }, "Typ

我想将作为REST查询(json字符串不能更改)结果得到的json反序列化为字典类型。 json字符串如下所示:

{
 "collection": {
   "useful": true 
   "attributes": {
     "ObjectID": "ObjectID",
     "Name": "Name",
     "FirstID": "FirstID",
     "LastID": "LastID",
     "Count": "5",
     },
   "Type": "Polyline",
   "features": [{
     "attributes": {
        "length": 0.10879009704943393
        "time": 0.3822371137674949,
        "text": "some text",
        "ABC": -2209161600000,
        "Type": "SomeType"
        }
      }]
    }
}
我为“有用”创建布尔属性,为“计数”等创建整数,但我对“属性”有问题。正如您所看到的,在每个部分(以及每个结果)中,我得到了不同的“属性”。 我需要将它们反序列化到一些通用集合中,如字典或KeyValuePair列表。问题是,正如msdn(此处-)中所述,“字典不是直接使用JSON的方法”

如果是这样,我怎么做? 我的应用程序是silverlight 5、.Net 4,VS 2010


提前谢谢

您可以使用字典作为属性属性的一种类型。我试过了。这是我得到的例外:“无法反序列化数据协定类型“…”,因为成员“Attributes”不是公共的。将成员公开将修复此错误。或者,您可以将其设置为内部,并在程序集上使用InternalsVisibleToAttribute属性以启用内部成员的序列化—有关详细信息,请参阅文档。请注意,这样做会带来某些安全隐患。“您必须将类中的attributes属性定义为publicSure。这是属性:[DataMember(Name=“attributes”,IsRequired=false,EmitDefaultValue=true)]公共字典属性{get;set;}每次尝试反序列化到dictionary时,我都会遇到此异常,即使dictionary属性是public。您使用的是哪种json序列化程序?json.NET像这样反序列化json不会有任何问题。