在我的应用程序中,我使用newtonsoft来序列化和反序列化对象,我想知道API中是否内置了任何内容来确定输入字符串是否可以反序列化到特定对象?
public TObject Deserialize<TObject>(string serialized)
{
/// I want check the condition, and if is not serialized string just return default(TObject)
return JsonConvert.DeserializeObject<TObject>(serialized);
}
我不想使用try catch
。目前我是这样实现的,但希望在开始反序列化对象之前找到一种验证字符串的方法。
我已经在一个"TryParse";方式,但这不是我的答案,因为我没有任何特定的模式,JSON格式可以动态更改。
截至当前版本,Json.Net中没有TryParse
。如果您没有已知的模式进行验证,并且不想使用try...catch
,那么我可以看到的唯一其他选项就是将错误处理程序附加到序列化程序,并将其用作检测和/或处理错误的手段。请参阅文档中的"错误处理"。
private static bool TryParseJSON(string json, out JObject jObject)
{
try
{
jObject = JObject.Parse(json);
return true;
}
catch
{
jObject = null;
return false;
}
}
适用于我的场景
此线程使用Newtonsoft.Json.Schema.的最新包实现了一个不错的TryParse