如何将一个JObject反序列化为.NET对象

我高兴地使用Newtonsoft JSON库 。 例如,我将创build一个.NET对象的JObject ,在这种情况下,一个Exception的实例(可能或可能不是一个子类)

 if (result is Exception) var jobjectInstance = JObject.FromObject(result); 

现在我知道库可以反序列化JSON文本(即string)到一个对象

 // only works for text (string) Exception exception = JsonConvert.DeserializeObject<Exception>(jsontext); 

但我正在寻找的是:

 // now i do already have an JObject instance Exception exception = jobjectInstance.???? 

那么很显然,我可以从JObject返回到JSON文本,然后使用反序列化function,但似乎倒退给我。

根据这个post ,现在好多了:

 // pick out one album JObject jalbum = albums[0] as JObject; // Copy to a static Album instance Album album = jalbum.ToObject<Album>(); 

文档: 将JSON转换为types

从我find这个文件

 JObject o = new JObject( new JProperty("Name", "John Smith"), new JProperty("BirthDate", new DateTime(1983, 3, 20)) ); JsonSerializer serializer = new JsonSerializer(); Person p = (Person)serializer.Deserialize(new JTokenReader(o), typeof(Person)); Console.WriteLine(p.Name); 

Person的类定义应与以下内容兼容:

 class Person { public string Name { get; internal set; } public DateTime BirthDate { get; internal set; } } 

编辑

如果您使用的是最新版本的JSON.net, 并且不需要自定义序列化,请参阅上面的TienDo的答案(或者如果您赞扬我:P),这更简洁。