Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit c6ec206

Browse files
committed
Change decimal to parse float style numbers by default
1 parent f5cfc62 commit c6ec206

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

src/ServiceStack.Text/Common/DeserializeBuiltin.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ private static ParseStringDelegate GetParseFn()
6666
case TypeCode.Double:
6767
return value => double.Parse(value, CultureInfo.InvariantCulture);
6868
case TypeCode.Decimal:
69-
return value => decimal.Parse(value, CultureInfo.InvariantCulture);
69+
return value => decimal.Parse(value, NumberStyles.Float, CultureInfo.InvariantCulture);
7070
case TypeCode.DateTime:
7171
return value => DateTimeSerializer.ParseShortestXsdDateTime(value);
7272
case TypeCode.Char:
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using NUnit.Framework;
2+
3+
namespace ServiceStack.Text.Tests.JsonTests
4+
{
5+
public class JsonDecimalTests
6+
{
7+
public class MyOrderBook
8+
{
9+
public decimal[][] Bids { get; set; }
10+
}
11+
12+
[Test]
13+
public void Does_parse_float_exp_notation_into_decimal()
14+
{
15+
var json = @"{""bids"": [[""0.01985141"", 7.67e-6],[""0.01985141"", 7.67e-6]] }";
16+
var response = json.FromJson<MyOrderBook>();
17+
Assert.That(response.Bids, Is.Not.Null);
18+
Assert.That(response.Bids[0][1], Is.EqualTo(0.00000767m));
19+
Assert.That(response.Bids[1][0], Is.EqualTo(0.01985141m));
20+
}
21+
}
22+
}

tests/ServiceStack.Text.Tests/ServiceStack.Text.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@
195195
<Compile Include="Issues\JsConfigIssues.cs" />
196196
<Compile Include="JsonTests\InheritAbstractTests.cs" />
197197
<Compile Include="JsonTests\InheritanceTests.cs" />
198+
<Compile Include="JsonTests\JsonDecimalTests.cs" />
198199
<Compile Include="JsonTests\JsonEnumTests.cs" />
199200
<Compile Include="JsonTests\InvalidJsonTests.cs" />
200201
<Compile Include="JsonTests\OnDeserializationErrorTests.cs" />

0 commit comments

Comments
 (0)