Qowaiv.Json.QowaivJsonConverter.ReadJson C# (CSharp) Method

ReadJson() public method

Reads the JSON representation of an IJsonSerializable.
public ReadJson ( JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer ) : object
reader Newtonsoft.Json.JsonReader /// The Newtonsoft.Json.JsonReader to read from. ///
objectType System.Type /// The type of the object. ///
existingValue object /// The existing value of object being read. ///
serializer Newtonsoft.Json.JsonSerializer /// The calling serializer. ///
return object
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            Guard.NotNull(reader, "reader");
            Guard.NotNull(objectType, "objectType");

            var isNullable = objectType.IsGenericType;
            var result = (IJsonSerializable)Activator.CreateInstance(isNullable ? objectType.GetGenericArguments()[0] : objectType);

            switch (reader.TokenType)
            {
                // Empty value for null-ables.
                case JsonToken.Null:
                    if (isNullable) { return null; }
                    result.FromJson();
                    break;

                // A number without digits.
                case JsonToken.Integer:
                    result.FromJson((long)reader.Value);
                    break;

                // A number with digits.
                case JsonToken.Float:
                    result.FromJson((double)reader.Value);
                    break;

                // A string.
                case JsonToken.String:
                    result.FromJson((string)reader.Value);
                    break;
                // Other scenario's are not supported.
                default:
                    throw new JsonSerializationException(string.Format(CultureInfo.CurrentCulture, QowaivMessages.JsonSerialization_TokenNotSupported, objectType.FullName, reader.TokenType));
            }
            return result;
        }