反序列化复杂 JSON 包含继承对象类型的数组

Deserializing complex JSON contain array of inherited object types

我创建了一个名为 RESTObjectBase 的 class。此 class 由任意数量的其他 class 继承,其中包括人员、地址、phone 号码等信息。

我创建了一个包含一个或多个此类对象的 List<RestObjectBase>,并通过 REST 调用将其传回前端。

即return的JSON如下:

{
   "Items":[
      {
         "__type":"AnyObjectInheritedFromBaseClass",
         "ObjectType":3,
         "First_Name":"",
         "Last_Name":"",
      }
   ],
   "Status":0
}

我正试图在另一端反序列化它。我有多个错误,包括 'type cannot be null' 但这不是我的问题。

有什么方法可以将这种复杂的对象反序列化为原始对象 class/list。我挣扎的原因是它是一个最终继承 RESTObjectBase 的对象数组,而且反序列化看起来不够聪明,无法做到这一点。

反序列化的前端可以是任何设备或平台,所以我不能简单地使用像 JSON.NET 这样的东西,因为它不是到处都支持。

我什至很乐意解构 JSON 并分别序列化数组中的每个项目,但我也不知道该怎么做。我可以使用该类型来计算如何反序列化它。

如有任何帮助,我们将不胜感激。

一切都是关于使用正确的序列化程序。我正在使用 DataContractJsonSerializer 进行序列化,所以对反序列化进行了同样的操作,它按预期工作。

        RESTResponse rr2 = null;

        using (MemoryStream ms = new MemoryStream())
        {
            var writer = new StreamWriter(ms);
            writer.Write(textBox1.Text);
            writer.Flush();
            ms.Position = 0;

            DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(RESTResponse));

            rr2 = (RESTResponse)s.ReadObject(ms);
        }

虽然我计划在移动设备上的许多不同平台上执行此操作,但我计划使用 Xamarin,因此我应该能够执行相同的代码。

这也意味着我可以 JSON.NET。