C# 无法强制转换类型为';Newtonsoft.Json.Linq.JObject';打字

C# 无法强制转换类型为';Newtonsoft.Json.Linq.JObject';打字,c#,json,.net-4.0,json.net,C#,Json,.net 4.0,Json.net,我有一个包含节点数组的对象,其json序列化如下所示: { "$type": "Toolbar, MyNamespace", "DisplayIcons": true, "NodeHolder": { "$type": "NodeHolder, NodeHolderNamespace", "RootNode": { "$type": "NodeHolder, NodeHolderNamespace", "Id": 0, "Title

我有一个包含节点数组的对象,其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,
          ...
}
我的问题是,当枚举子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);
反序列化代码:

var settings = new JsonSerializerSettings();
settings.TypeNameHandling = TypeNameHandling.Objects;
string json = JsonConvert.SerializeObject(o, Formatting.Indented, settings);
Toolbar tb = JsonConvert.DeserializeObject<Toolbar>(json);
Toolbar tb=JsonConvert.DeserializeObject(json);

foreach(node.Children中的NodeHolder-child)…显示全部代码:如何反序列化对象,反序列化到的对象类型是什么我添加了序列化和反序列化行,访问反序列化对象的代码和
工具栏的定义在哪里,
节点文件夹
。显示所有相关信息,以便我们可以帮助您。