我创建了一个名为RESTObjectBase
的类。此类由任意数量的其他类继承,其中包括人员,地址,电话号码等信息。
我创建一个包含一个或多个此类对象的List<RestObjectBase>
,并通过REST调用将其传递回前端。
返回的JSON如下:
{
"Items":[
{
"__type":"AnyObjectInheritedFromBaseClass",
"ObjectType":3,
"First_Name":"",
"Last_Name":"",
}
],
"Status":0
}
我试图在另一端反序化。我有多个错误,包括&#39; type不能为null&#39;但这不是我的问题。
有没有办法将这种复杂性的对象反序列化为原始类/列表。为什么我挣扎的是最终继承RESTObjectBase
的一系列对象,并且它看起来不像反序列化那样足够聪明。
前端反序列化可以是任何设备或平台,所以我不能简单地使用像JSON.NET这样的东西,因为它在任何地方都不受支持。
我甚至乐意解构JSON并单独序列化数组中的每个项目,但我也无法弄清楚如何执行此操作。我可以使用该类型来确定如何反序列化它。
任何帮助都将不胜感激。
答案 0 :(得分:0)
所有关于使用正确的序列化程序。我正在使用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。