Files
Umbraco-CMS/src/Umbraco.Core/Serialization/FuzzyBooleanConverter.cs
2018-03-05 14:59:23 +01:00

43 lines
1.1 KiB
C#

using System;
using Newtonsoft.Json;
namespace Umbraco.Core.Serialization
{
public class FuzzyBooleanConverter : JsonConverter
{
public override bool CanWrite => false;
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotSupportedException();
}
public override bool CanRead => true;
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var value = reader.Value;
if (value is bool) return value;
switch (value.ToString().ToLower().Trim())
{
case "true":
case "yes":
case "y":
case "1":
return true;
case "false":
case "no":
case "n":
case "0":
return false;
}
return new JsonSerializer().Deserialize(reader, objectType);
}
public override bool CanConvert(Type objectType) => objectType == typeof(bool);
}
}