【发布时间】:2016-07-01 07:38:08
【问题描述】:
我正在调用 REST API 以获取对象作为 ResponseData。
CustomField CustomFieldObj = JsonConvert.DeserializeObject<CustomField>(ResponseData.ToString());
// 类定义(DataType 是int? 类型)
public class CustomField {
public int? DataType {get; set;}
}
API 有这样的对象(DataType 是 string 类型)
public class ResposeData {
public string DataType {get; set;}
}
现在,JsonConvert.DeserializeObject 由于数据类型不同(字符串无法转换为 int)而引发错误。
那么,如何在反序列化时忽略这些具有不同数据类型的属性呢?
【问题讨论】:
-
发布 JSON 字符串和确切的错误。虽然,如果您尝试将
"someString123"转换为整数,那么您做错了。如果 API 希望该字段是数字而不是字符串,他们会将其序列化为数字。例如,如果您省略扩展名和国际代码,电话号码可能看起来像 int,但将其视为 int 绝对是一个错误 -
是的,这正是发生的事情。如何自定义某些特定属性的映射?
-
我无法更改任何对象类型。所以我必须在反序列化时以某种方式对其进行自定义。我可以为此传递任何参数吗?
-
没有代码,没有 JSON,没有错误,没有人可以回答。您不能将
123sd反序列化为 int。你确定文本可以被解析为整数吗?此外,如果为调用 API 而创建的对象类型错误,您应该修复该错误,而不是试图掩盖它。否则,您必须创建 new 对象来读取输入,过滤掉那些无法解析的对象并将其余对象映射到现有对象 -
好的,我正在更新问题
标签: c# .net rest serialization json.net