C# 反序列化包含继承对象类型数组的复杂JSON
我创建了一个名为C# 反序列化包含继承对象类型数组的复杂JSON,c#,json,serialization,C#,Json,Serialization,我创建了一个名为RESTObjectBase的类。该类由任何数量的其他类继承,这些类包括诸如人员、地址、电话号码等信息 我创建一个包含一个或多个此类对象的列表,并通过REST调用将其传递回前端 返回的JSON如下所示: { "Items":[ { "__type":"AnyObjectInheritedFromBaseClass", "ObjectType":3, "First_Name":"", "Las
RESTObjectBase
的类。该类由任何数量的其他类继承,这些类包括诸如人员、地址、电话号码等信息
我创建一个包含一个或多个此类对象的列表
,并通过REST调用将其传递回前端
返回的JSON如下所示:
{
"Items":[
{
"__type":"AnyObjectInheritedFromBaseClass",
"ObjectType":3,
"First_Name":"",
"Last_Name":"",
}
],
"Status":0
}
我试图在另一端反序列化这个。我有多个错误,包括“类型不能为null”,但这不是我真正的问题
有没有办法将如此复杂的对象反序列化为原始类/列表。我之所以苦苦挣扎,是因为它是一个最终继承了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。您使用的是什么序列化程序?存在“\uuu type”参数表明它是
DataContractJsonSerializer
或JavaScriptSerializer
。请查看VS中的“将JSON粘贴为类”功能。谢谢。这两个都让我回到了正确的道路上。还有2小时的睡眠:)。