43 lines
1.1 KiB
C#
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);
|
|
}
|
|
}
|