c# - DataContractJsonSerializer 反序列化问题
问题描述
我需要反序列化下面给出的 Json 数组....
[
{
"GeoType": 1,
"ID": "2650f7d2-7a5e-4b63-856c-07600fa2a854",
"Name": "Afghanistan",
"CapitalCity": null,
"CountryBoundaries": null,
"CountryCode": "AF",
"ISO": "AFG",
"Parent": {
"__type": "Region:#MEDEX.Library.Geo",
"GeoType": 0,
"ID": "6dc22edb-d711-4253-937f-242b0cd3c011",
"Name": "Asia",
"Code": "Asi"
},
"RegionID": "6dc22edb-d711-4253-937f-242b0cd3c011"
},
{
"GeoType": 1,
"ID": "3917c1c8-ee01-4e9b-8622-0fac9e9194ab",
"Name": "Albania",
"CapitalCity": null,
"CountryBoundaries": null,
"CountryCode": "AL",
"ISO": "ALB",
"Parent": {
"__type": "Region:#MEDEX.Library.Geo",
"GeoType": 0,
"ID": "b7ebd500-45e6-4a48-a2ef-f38fe99e7352",
"Name": "Europe",
"Code": "Eur"
},
"RegionID": "b7ebd500-45e6-4a48-a2ef-f38fe99e7352"
}
]
我的对象定义是:
[DataContract]
public class Parent1
{
[DataMember]
public Dictionary<string, Type> __type { get; set; }
[DataMember]
public string ID { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string GeoType { get; set; }
[DataMember]
public string Code { get; set; }
}
[DataContract]
public class Country
{
[DataMember]
public string ID { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string GeoType { get; set; }
[DataMember]
public Parent1 Parent { get; set; }
[DataMember]
public string RegionID { get; set; }
[DataMember]
public string CountryCode { get; set; }
[DataMember]
public string ISO { get; set; }
}
它总是出错:
{“元素':Parent'包含映射到名称' http://schemas.datacontract.org/2004/07/MEDEX.Library.Geo:Region '的类型的数据。反序列化器不知道任何类型映射到此名称。如果您使用 DataContractSerializer,请考虑使用 DataContractResolver,或者将与“Region”对应的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给的已知类型列表中序列化程序。"}
你能建议我任何解决方案吗?我什至不明白这个错误意味着什么。请建议。
解决方案
将 [KnownType(Region)] 添加到类 Parent1 属性
推荐阅读
- android - queryIntentActivities method returns empty List for API level 23 (Marshmallow) and below
- java - jboss AS 7 对 glassfish 的限制
- linux - 使用 socat 同时嗅探多个串口
- recursion - 递归调用后的代码递归
- typescript - 如何检查 get 方法 TypeScript 中的属性值
- javascript - Chrome claims a function takes long but it is never called
- vba - Excel VBA: Paste Excel Range as a Table in Powerpoint
- text - VBS OpenTextFile returns unexpected result
- powershell - Powershell 中的显式返回
- android - 在 ionic cordova android 上构建项目失败并出现 UnhandledPromiseRejectionWarning