public object Deserialize(object value, Type objectType, bool allowNull = false)
{
var token = value as JToken ?? new JValue(value);
if (token.Type == JTokenType.Null && allowNull)
{
return(null);
}
if (token.Type == JTokenType.String && objectType.IsInterface && TypeMetadataCache.IsValidMessageType(objectType))
{
return(JsonConvert.DeserializeObject((string)value, objectType, JsonMessageSerializer.DeserializerSettings));
}
using var jsonReader = new JTokenReader(token);
return(SerializerCache.Deserializer.Deserialize(jsonReader, objectType));
}