我正在调用一个API,该API返回以下响应
{
"data": {
"name": "John",
"score": 51
},
"ret": 0
}
发生错误时,响应变为
{
"data": "error message",
"ret": 1
}
注意,“ data”属性从对象到字符串都不同。
现在,我可以使用JsonConverter返回不同类型的不同类,问题是保存此响应的模型。即如果我使用
public class MyResponse
{
[JsonConverter(typeof(MyResponseType))]
[JsonProperty(PropertyName = "data")]
public MyResponseType Data { get; set; }
[JsonProperty(PropertyName = "ret")]
public int ReturnCode { get; set; }
}
MyResponseType当然可以容纳一个对象,但是不能强制转换为字符串。
我试图使用通用类型来保存数据
public class MyReponse<T>
{
[JsonProperty(PropertyName = "data")]
public T Data { get; set; }
[JsonProperty(PropertyName = "ret")]
public int ReturnCode { get; set; }
}
但是,这又带来了另一个问题,.Net Core中的服务使用了该MyReponse类,其中该服务是通过ConfigureServices步骤中的依赖项注入来初始化的,这不允许传递泛型。因此,我陷入了另一个困境。
关于如何创建可以处理这种情况的适当数据模型的任何建议?
因此,假设发生错误时“ ret”值为1,我能想到的最简单的解决方案是在投射之前检查该属性。
所以你可以有两个模型
和
然后决定您应该使用哪种类型。