【发布时间】:2013-01-30 23:04:48
【问题描述】:
我有一个 Web API 方法,可以将任意 json 有效负载接收到 JObject 属性中。因此,我不知道会发生什么,但我仍然需要将其转换为 .NET 类型。我想要一个Dictionary<string,object>,这样我就可以随心所欲地处理它。
我搜索了很多,但找不到任何东西,最后开始了一个混乱的方法来做这个转换,一个键一个键,一个值一个值。有什么简单的方法吗?
输入->
JObject person = new JObject(
new JProperty("Name", "John Smith"),
new JProperty("BirthDate", new DateTime(1983, 3, 20)),
new JProperty("Hobbies", new JArray("Play football", "Programming")),
new JProperty("Extra", new JObject(
new JProperty("Foo", 1),
new JProperty("Bar", new JArray(1, 2, 3))
)
)
谢谢!
【问题讨论】:
-
两件事,JObject 已经实现了 Dictionary
。问题是,您处理子属性的意图是什么。你的 Dictionary 中的那个值会是另一个 Dictionary ? -
是的@Rich,子属性将是另一个字典
-
另见How do I use JSON.NET to deserialize into nested/recursive Dictionary and List?。第一个答案中的
ToObject(JToken)辅助方法将使用最少的代码进行此转换。