代码片段 / 应用笔记 · 2023年3月7日

将JsonConvert反序列化得到的Newtonsoft.Json.Linq.JObject转换为复杂的自定义类型

举个例子,有这样一段代码,其中包含一个自定义类BatteryStatus

如果不更改SaveObjectToString或ReadObjectFromString函数(并假设您甚至没有看到这些函数的源代码),如何将obj转换为BatteryStatus类的对象?

强制转换是不行的:

batteryStatus = (BatteryStatus)obj;

这会导致以下错误:

无法将类型’Newtonsoft.Json.Linq.JObject的对象强制转换为类型“BatteryStatus”。

正确的办法是使用 JObject的 ToObject<>函数,如下: