反序列化复杂 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。
我创建了一个名为 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。