c# - 将嵌套的 JObject 反序列化到 JSON.Net 中的 Dictionary<string,string> 中

标签 c# json.net

我正在尝试反序列化一些如下所示的数据:

{
   "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);

但这给了我类型的 Value 对象:字符串、 double 、 bool 值或 JObject

我有兴趣研究如何路由未知的JObject进入Dictionary<string, string>对象。

最佳答案

您可以使用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"]);

关于c# - 将嵌套的 JObject 反序列化到 JSON.Net 中的 Dictionary<string,string> 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13346484/

相关文章:

c# - 未触发 Kendo UI DropDownList Change 事件

c# - 'decimal' 类型和格式的 html 助手?

c# - 我可以获得对象的通用类型吗?

c# - 如何避免 Linq to Sql 查询中的循环?

c# - 从 C# 类到等效的 JavaScript 的自动代码生成

c# - C# 中带有附加行的十字准线光标

c# - WPF 应用程序 list 文件

c# - 使用 Json.NET 在 Windows Phone 7 中反序列化 JSON

javascript - 将 enum 序列化为 const JsonNet

c# - 如何在不创建对象的情况下使用 C# 序列化 Guid?