Skip to content

Commit 1500d45

Browse files
author
Oren (electricessence)
committed
Switched to 'convert' to handle double to decimal edge case.
1 parent 839d22d commit 1500d45

4 files changed

Lines changed: 7 additions & 3 deletions

File tree

Open.Serialization.Json.Newtonsoft/Converters/JsonDecimalConverter.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Newtonsoft.Json;
2+
using System;
23

34
namespace Open.Serialization.Json.Newtonsoft.Converters
45
{
@@ -19,6 +20,9 @@ public static string Normalize(string decimalString)
1920
=> decimalString?.IndexOf('.') == -1 ? decimalString
2021
: decimalString?.TrimEnd('0').TrimEnd('.');
2122

23+
public override decimal ReadJson(JsonReader reader, Type objectType, decimal existingValue, bool hasExistingValue, JsonSerializer serializer)
24+
=> Convert.ToDecimal(reader.Value);
25+
2226
public override void WriteJson(JsonWriter writer, decimal value, JsonSerializer serializer)
2327
=> writer.WriteRawValue(Normalize(value));
2428
}

Open.Serialization.Json.Newtonsoft/Converters/JsonDecimalRoundingConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public JsonDecimalRoundingConverter(int maximum)
1414
}
1515

1616
public override decimal ReadJson(JsonReader reader, Type objectType, decimal existingValue, bool hasExistingValue, JsonSerializer serializer)
17-
=> Math.Round(Convert.ToDecimal(reader.Value), Maximum);
17+
=> Math.Round(base.ReadJson(reader, objectType, existingValue, hasExistingValue, serializer), Maximum);
1818

1919
public override void WriteJson(JsonWriter writer, decimal value, JsonSerializer serializer)
2020
=> base.WriteJson(writer, Math.Round(value, Maximum), serializer);

Open.Serialization.Json.Newtonsoft/Converters/JsonNullableDecimalConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public static readonly JsonNullableDecimalConverter Instance
1717
=> reader.TokenType switch
1818
{
1919
JsonToken.Null => default,
20-
JsonToken.Float => (decimal)reader.Value,
20+
JsonToken.Float => Convert.ToDecimal(reader.Value),
2121
_ => throw new JsonException("Unexpected token type."),
2222
};
2323

Open.Serialization.Json.Newtonsoft/Open.Serialization.Json.Newtonsoft.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Part of the "Open" set of libraries.
1717
<RepositoryUrl>https://github.com/electricessence/Open.Serialization</RepositoryUrl>
1818
<RepositoryType>git</RepositoryType>
1919
<PackageTags>serialization json newtonsoft</PackageTags>
20-
<Version>1.2.4</Version>
20+
<Version>1.2.5</Version>
2121
</PropertyGroup>
2222

2323
<ItemGroup>

0 commit comments

Comments
 (0)