2

我正在尝试反序列化一些看起来像这样的数据:

{
   "item1":"value1",
   "item2":2,
   "item3":true,
   "item4":{
       "subItem1":"subValue1",
       "subItem2":"subValue2",
   }
}

在 C# 中,我希望反序列化的对象是以下内容的实例:

Dictionary<string, object>

每个 Value 对象的实际类型是:string、double、boolean 或Dictionary<string,string>

我可以简单地使用如下语句:

JSONConvert.Deserialise<Dictionary<string,object>>(text);

但这给了我类型的值对象:字符串、双精度、布尔值或JObject

我有兴趣研究如何将 unknown 路由JObjectDictionary<string, string>对象中。

4

1 回答 1

3

您可以使用而不是反序列化为字典dynamic

dynamic json = JsonConvert.DeserializeObject(text);
Console.WriteLine(json.item1);
Console.WriteLine(json.item4.subItem1);

JObject 还实现了 IDictionary,因此您也可以将其用作

var jobj = (JObject)JsonConvert.DeserializeObject(text);
Console.WriteLine(jobj["item4"]["subItem1"]);
于 2012-11-12T15:29:59.617 回答