有一个提供 Json 对象的 api 服务。
该服务的构建方式使得状态 200(OK) 可以返回我需要的对象,也可以返回以下格式的错误对象{ "error": "<error message>" }
public class ApiError
{
[JsonProperty("error")]
public string Message { get; set; }
}
我需要检查服务器返回的对象,并返回true or false,以及我自己的错误对象(它会与上面的不同)。
这是我的示例代码
private bool IsError(out Error error)
{
var apiError = JsonConvert.DeserializeObject<ApiError>(json);
if (apiError.Message != null )
{
error = new Error(apiError.Message);
return true;
}
else
{
error = null;
return false;
}
}
问题是当一个非错误对象到达时,应用程序会因序列化错误而崩溃。我知道您需要某种通用方法
您可以尝试在JObject中解析
带有ContainsKey的变体
在不遇到异常的情况下进行反序列化的唯一方法是手动检查字符串是否与目标对象的格式匹配。
例如,使用字符串函数
Contains来检查字符串是否有错误字段。但是,我认为获取和处理异常没有任何问题。