【发布时间】:2014-07-16 12:25:42
【问题描述】:
当我处理可能是错误的json 响应时,我使用此方法来确定json 是实际上是错误 还是可能是预期的响应强>:
bool TryParseResponseToError(string jsonResponse, out Error error)
{
// Check expected error keywords presence
// before try clause to avoid catch performance drawbacks
if (jsonResponse.Contains("error") &&
jsonResponse.Contains("status") &&
jsonResponse.Contains("code"))
{
try
{
error = new JsonSerializer<Error>().DeserializeFromString(jsonResponse);
return true;
}
catch
{
// The JSON response seemed to be an error, but failed to deserialize.
// It may be a successful JSON response : do nothing.
}
}
error = null;
return false;
}
但是,我有一个空的捕获,这是一种不好的代码气味。
我在 ServiceStack 库中没有看到任何 TryToDeserialize 类型的方法。有吗?
您如何使用 ServiceStack 处理 json 错误?
【问题讨论】:
-
您可以构建自己的
TryToDeserialize扩展方法。顺便说一句,似乎几乎每个人都使用JSON.NET 而不是内置的序列化程序。 -
扩展方法是个好主意,谢谢。您能否提供有关 Json.Net 方式而不是 JsonSerializer
的更多详细信息? -
您只需要查看他们的文档,这非常好。我支持@tvanfosson,您应该使用 HTTP 状态代码而不是 JSON 对象来表示错误。
-
是的,我同意这样会更好......但我不拥有这项服务。
-
我的问题问得不好,我在这里改写一下:[以“TryParse”方式反序列化json][1] [1]:stackoverflow.com/questions/23906220/…
标签: c# servicestack jsonserializer