Introduction
In ASP.NET WEB API / MVC in the request input model if you have some property that accepts bool type with content type application/json, it might even accept numbers which will be converted to bool type. If you send numbers as input for bool, it'll be converted to false for 0 and true for everything else (with an exception observed - 08 and 09 as null).
Problem statement
To restrict from numbers being accepted as input for bool type property in JSON content type.
Solution
- Create a converter that inherits from Newtonsoft.Json.JsonConverter.
- Override ReadJson method, check the ValueType for bool type and throw JSON serializer exception if not.
Snippet (Converter)
public class BooleanConverter : JsonConverter { public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.ValueType != typeof(bool)) { throw new JsonSerializationException("Invalid data type"); } return reader.Value; } public override bool CanConvert(Type objectType) { return objectType == typeof(bool); } }
No comments:
Post a Comment