我可以确定字符串是否可以通过newtonsoft进行反序列化?

Pey*_*man 11 c# json.net

在我的应用程序中,我使用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);
}
Run Code Online (Sandbox Code Playgroud)

我不想用try catch.目前我实现了这样,但希望在开始反序列化对象之前找到验证字符串的方法.

我已经看到这个问题以"TryParse"的方式反序列化json,但它不是我的答案,因为我没有任何特定的模式,JSON格式可以动态更改.

Bri*_*ers 15

TryParse截至当前版本,Json.Net中没有.如果您没有要验证的已知模式,并且您不想使用try...catch那么我可以看到的唯一其他选项是将错误处理程序附加到序列化程序并将其用作检测和/或检测的方法处理错误.请参阅文档中的"错误处理".


hng*_*r18 13

    private static bool TryParseJSON(string json, out JObject jObject)
    {
        try
        {
            jObject = JObject.Parse(json);
            return true;
        }
        catch
        {
            jObject = null;
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

对我的场景工作得很好