Я получаю ответы API от сторонних производителей, которые имеют неоднозначные типы.Для некоторых методов это:
{"error":{"message":"Resource is already part of this app","status_code":400}}
А для других вызовов это:
{"error": "Resource is already part of this app" }
Возможно ли десериализовать такие ответы в нечто вроде:
public class Response
{
[JsonProperty("error")]
public string Error { get; set; }
[JsonIgnore] //[JsonProperty("error")]
public ObjectError ObjectError { get; set; }
}
public class ObjectError
{
[JsonProperty("message")]
public string Message { get; set; }
[JsonProperty("status_code")]
public string StatusCode { get; set; }
}
ОБНОВЛЕНИЕ
Таким образом, я в конечном итоге использовал объект в качестве catch all для десериализации.
[JsonProperty("error")]
public object Error { get; set; }
public string ErrorAsString => Error is string ? Error.ToString() : null;
public ObjectError ErrorAsObject => Error is string ? null : Error != null ? JsonConvert.DeserializeObject<ObjectError>(Error.ToString()) : null;
Это не идеально, я знаю.