如何将JObject反序列化到.NET对象
如何将JObject反序列化到.NET对象
我很高兴使用 Newtonsoft JSON 库。
例如,我可以从一个.NET对象创建一个 JObject
,在这种情况下是一个Exception的实例(可能是一个子类)
if (result is Exception) var jobjectInstance = JObject.FromObject(result);
现在我知道该库可以将JSON文本(即字符串)反序列化为对象
// only works for text (string) Exception exception = JsonConvert.DeserializeObject(jsontext);
但我正在寻找的是:
// now i do already have an JObject instance Exception exception = jobjectInstance.????
很明显我可以从一个 JObject
回到 JSON 文本,然后使用反序列化功能,但这对我来说似乎是倒退的。
admin 更改状态以发布 2023年5月23日
从文档中,我找到了这个:
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,而且不需要自定义序列化,请参阅Tien Do的答案,那更为简洁。
根据这篇文章,现在处理JSON要好得多:
// pick out one album JObject jalbum = albums[0] as JObject; // Copy to a static Album instance Album album = jalbum.ToObject();
文档:将JSON转换为类型