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

时间:2015-01-12 08:18:34

标签: c# json .net-4.0 json.net

我有一个包含节点数组的对象,它的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);

0 个答案:

没有答案