C# DataContractJsonSerializer-反序列化到字典
我想将作为REST查询(json字符串不能更改)结果得到的json反序列化为字典类型。 json字符串如下所示: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
{
"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不会有任何问题。