btcpayserver/BTCPayServer/JsonConverters/CurrencyValueJsonConverter.cs

36 lines
1.2 KiB
C#
Raw Normal View History

2020-06-28 21:44:35 -05:00
using System;
using System.Reflection;
using NBitcoin.JsonConverters;
2020-06-28 17:55:27 +09:00
using Newtonsoft.Json;
namespace BTCPayServer.JsonConverters
{
public class CurrencyValueJsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return typeof(CurrencyValue).GetTypeInfo().IsAssignableFrom(objectType.GetTypeInfo());
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
try
{
return reader.TokenType == JsonToken.Null ? null :
CurrencyValue.TryParse((string)reader.Value, out var result) ? result :
throw new JsonObjectException("Invalid Currency value", reader);
}
catch (InvalidCastException)
{
throw new JsonObjectException("Invalid Currency value", reader);
}
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
2020-06-28 17:55:27 +09:00
if (value != null)
writer.WriteValue(value.ToString());
}
}
}