我有一个包含节点数组的对象,它的json序列化如下所示:
{
"$type": "Toolbar, MyNamespace",
"DisplayIcons": true,
"NodeHolder": {
"$type": "NodeHolder, NodeHolderNamespace",
"RootNode": {
"$type": "NodeHolder, NodeHolderNamespace",
"Id": 0,
"Title": "root",
"Children": [
{
"$type": "NodeHolder, NodeHolderNamespace",
"Id": 10001,
"Title": "Homepage",
},
{
"$type": "NodeHolder, NodeHolderNamespace",
"Id": 10002,
...
}
我的问题是,在枚举Children arraylist时它无法将对象强制转换为NodeHolder,我收到一条错误消息:无法转换类型' Newtonsoft.Json.Linq.JObject'键入NodeHolder。该类型已经在json上定义,不知道下一步要尝试什么
序列化代码:
var settings = new JsonSerializerSettings();
settings.TypeNameHandling = TypeNameHandling.Objects;
string json = JsonConvert.SerializeObject(o, Formatting.Indented, settings);
反序列化代码:
Toolbar tb = JsonConvert.DeserializeObject<Toolbar>(json);