在我的应用程序中,我使用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
。目前我实现了这样,但希望在开始反序列化对象之前找到验证字符串的方法。
我已经看到了这个问题Deserialize json in a "TryParse" way,但它不是我的答案,因为我没有任何特定架构,JSON格式可以动态更改。
答案 0 :(得分:12)
截至当前版本,Json.Net中没有TryParse
。如果您没有要验证的已知架构,并且您不想使用try...catch
那么我能看到的唯一其他选项是将错误处理程序附加到序列化程序并使用作为检测和/或处理错误的手段。请参阅文档中的"Error Handling"。
答案 1 :(得分:1)
private static bool TryParseJSON(string json, out JObject jObject)
{
try
{
jObject = JObject.Parse(json);
return true;
}
catch
{
jObject = null;
return false;
}
}
对我的方案工作得很好
答案 2 :(得分:0)
This thread使用Newtonsoft.Json.Schema的最新软件包实现了一个不错的TryParse。