Skip to content

Commit eec9fb9

Browse files
committed
Add StringToFloatConverter
1 parent 3558b98 commit eec9fb9

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

Dysnomia.Common.WebAPIWrapper.Test/JsonTests.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ public class Entity {
2222
public string BoolToString { get; set; } = null!;
2323
[JsonConverter(typeof(WhateverToStringConverter))]
2424
public string NullToString { get; set; } = null!;
25+
[JsonConverter(typeof(StringToFloatConverter))]
26+
public float FloatToString { get; set; }
2527
}
2628

2729
public class SubEntity {
@@ -30,8 +32,8 @@ public class SubEntity {
3032

3133
[Fact]
3234
public void JsonTest_Converters_Test1() {
33-
var input = @"{""SubEntities"":[],""NumberToBool"":0,""StringToBool"":""false"",""StringToNumber"":""10"",""NumberToString"":10,""StringToString"":""test"",""BoolToString"":false,""NullToString"":null}";
34-
var expected = @"{""NumberToBool"":false,""StringToBool"":false,""SubEntities"":{""Foo"":null},""StringToNumber"":10,""NumberToString"":""10"",""StringToString"":""test"",""BoolToString"":""false"",""NullToString"":null}";
35+
var input = @"{""SubEntities"":[],""NumberToBool"":0,""StringToBool"":""false"",""StringToNumber"":""10"",""NumberToString"":10,""StringToString"":""test"",""BoolToString"":false,""NullToString"":null,""FloatToString"":""10.5""}";
36+
var expected = @"{""NumberToBool"":false,""StringToBool"":false,""SubEntities"":{""Foo"":null},""StringToNumber"":10,""NumberToString"":""10"",""StringToString"":""test"",""BoolToString"":""false"",""NullToString"":null,""FloatToString"":10.5}";
3537

3638
var entity = JsonSerializer.Deserialize<Entity>(input);
3739
var output = JsonSerializer.Serialize(entity);
@@ -41,8 +43,8 @@ public void JsonTest_Converters_Test1() {
4143

4244
[Fact]
4345
public void JsonTest_Converters_Test2() {
44-
var input = @"{""SubEntities"":{""Foo"":""bar""},""NumberToBool"":1,""StringToBool"":""true"",""StringToNumber"":""42"",""NumberToString"":42,""StringToString"":""foo"",""BoolToString"":true,""NullToString"":null}";
45-
var expected = @"{""NumberToBool"":true,""StringToBool"":true,""SubEntities"":{""Foo"":""bar""},""StringToNumber"":42,""NumberToString"":""42"",""StringToString"":""foo"",""BoolToString"":""true"",""NullToString"":null}";
46+
var input = @"{""SubEntities"":{""Foo"":""bar""},""NumberToBool"":1,""StringToBool"":""true"",""StringToNumber"":""42"",""NumberToString"":42,""StringToString"":""foo"",""BoolToString"":true,""NullToString"":null,""FloatToString"":""27.42""}";
47+
var expected = @"{""NumberToBool"":true,""StringToBool"":true,""SubEntities"":{""Foo"":""bar""},""StringToNumber"":42,""NumberToString"":""42"",""StringToString"":""foo"",""BoolToString"":""true"",""NullToString"":null,""FloatToString"":27.42}";
4648

4749
var entity = JsonSerializer.Deserialize<Entity>(input);
4850
var output = JsonSerializer.Serialize(entity);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using System;
2+
using System.Globalization;
3+
using System.Text.Json;
4+
using System.Text.Json.Serialization;
5+
6+
namespace Dysnomia.Common.WebAPIWrapper.Helpers {
7+
public class StringToFloatConverter : JsonConverter<float> {
8+
public override float Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) {
9+
var value = reader.GetString();
10+
return float.Parse(value, CultureInfo.InvariantCulture);
11+
}
12+
13+
public override bool CanConvert(Type typeToConvert) {
14+
return true;
15+
}
16+
17+
public override void Write(Utf8JsonWriter writer, float value, JsonSerializerOptions options) {
18+
JsonSerializer.Serialize(writer, value, options);
19+
}
20+
}
21+
}

0 commit comments

Comments
 (0)