Search code examples
c#json.netjsonconvert

How to prevent JsonReaderException when json is not valid in JsonConvert.DeserializeObject


I've a method that deserialize string into a type.

var data = JsonConvert.DeserializeObject<TestData>("invalid json");

If string is not valid, JsonReaderException occurring.

I want to return default value of TestData (null) when string is not valid instead of throw exception.

How can I do this without try/catch and JObject?


Solution

  • You can use JsonSerializerSettings to handle it the result of it will be NULL. The reference of JsonConvert.DeserializeObject and JsonSerializerSettings.Error

    var settings = new JsonSerializerSettings 
    {
        Error = (se, ev) => 
        { 
            ev.ErrorContext.Handled = true; 
        } 
    };
    var data = JsonConvert.DeserializeObject<Currency>("invalid json", settings);