/// <summary> /// Converts a JSON string to an instance of type <c>T</c>. /// </summary> /// <param name="instance"></param> /// <param name="stringToSerialize"></param> /// <param name="deserializerSettings"></param> /// <typeparam name="T"></typeparam> /// <returns> /// A deserialized instance of type <c>T</c> /// </returns> /// <exception cref="DeserializationException"> /// Deserialization errors will contain the root <see cref="JsonToken"/> from /// the tokenization phase. /// </exception> public T Deserialize <T>(object instance, string stringToSerialize, DeserializerSettings deserializerSettings = null) { Tokenize(stringToSerialize, deserializerSettings); try { var obj = _lastTokenization.GetValue <T>(instance); return(obj); } catch (DeserializationException e) { e.Token = _lastTokenization; throw; } catch (Exception e) { throw new DeserializationException($"An error occured during deserialization. {_lastTokenization}.{_lastTokenization.Name}", _lastTokenization, e); } }