【发布时间】:2021-01-19 05:28:11
【问题描述】:
我在反序列化 API 响应时遇到问题。响应返回一个对象。该对象中的属性之一可以是布尔值或对象。在 C# 中对其进行反序列化时,出现反序列化错误。如何区分这两种数据类型?
反序列化器:
JsonSerializer.Deserialize<IEnumerable<ApiResponse>>(response)
ApiResponse 对象:
public class ApiResponse
{
[JsonPropertyName("site")]
public bool SiteBool { get; set; }
[JsonPropertyName("site")]
public SiteObject Site { get; set; }
}
public class SiteObject
{
[JsonPropertyName("id")]
public string Id { get; set; }
[JsonPropertyName("url")]
public string Url { get; set; }
}
【问题讨论】:
-
使用
object或dynamic。 C# 没有联合类型,因此您只需选择一个上限类型 -
你得到什么错误?
-
@AluanHaddad 使用动态似乎可以否定反序列化错误!
-
@devNull InvalidOperationException:“ApiResonse.SiteObject”的 JSON 属性名称与另一个属性冲突。
-
您只需创建一个属性并删除另一个属性