public void TestArray() { var json = @"{""a"": [1, ""two"", null, 4.1, true]}"; var options = new JsonSerializerOptions(); var converter = new JsonElementInferredTypeConverter(); options.Converters.Add(converter); var result = JsonSerializer.Deserialize <Dictionary <string, object> >(json, options); object o; Assert.True(result.TryGetValue("a", out o)); Assert.IsType <object[]>(o); var array = (object[])o; Assert.Equal(5, array.Length); Assert.IsType <long>(array[0]); Assert.Equal(1, (long)array[0]); Assert.IsType <string>(array[1]); Assert.Equal("two", (string)array[1]); Assert.Null(array[2]); Assert.IsType <double>(array[3]); Assert.True(Math.Abs(4.1 - (double)array[3]) < 0.001); Assert.IsType <bool>(array[4]); Assert.True((bool)array[4]); }
public void TestNull() { var json = @"{""a"": null}"; var options = new JsonSerializerOptions(); var converter = new JsonElementInferredTypeConverter(); options.Converters.Add(converter); var result = JsonSerializer.Deserialize <Dictionary <string, object> >(json, options); object o; Assert.True(result.TryGetValue("a", out o)); Assert.Null(o); }
public void TestStrings() { var json = @"{""a"": ""hello"", ""b"": """"}"; var options = new JsonSerializerOptions(); var converter = new JsonElementInferredTypeConverter(); options.Converters.Add(converter); var result = JsonSerializer.Deserialize <Dictionary <string, object> >(json, options); object o; Assert.True(result.TryGetValue("a", out o)); Assert.IsType <string>(o); Assert.Equal("hello", (string)o); Assert.True(result.TryGetValue("b", out o)); Assert.IsType <string>(o); Assert.Equal("", (string)o); }
public void TestFloats() { var json = @"{""a"": 12.5, ""b"": 0.1}"; var options = new JsonSerializerOptions(); var converter = new JsonElementInferredTypeConverter(); options.Converters.Add(converter); var result = JsonSerializer.Deserialize <Dictionary <string, object> >(json, options); object o; Assert.True(result.TryGetValue("a", out o)); Assert.IsType <double>(o); Assert.True(Math.Abs(12.5 - (double)o) < 0.001); Assert.True(result.TryGetValue("b", out o)); Assert.IsType <double>(o); Assert.True(Math.Abs(0.1 - (double)o) < 0.001); }
public void TestBooleans() { var json = @"{""a"": true, ""b"": false}"; var options = new JsonSerializerOptions(); var converter = new JsonElementInferredTypeConverter(); options.Converters.Add(converter); var result = JsonSerializer.Deserialize <Dictionary <string, object> >(json, options); object o; Assert.True(result.TryGetValue("a", out o)); Assert.IsType <bool>(o); Assert.True((bool)o); Assert.True(result.TryGetValue("b", out o)); Assert.IsType <bool>(o); Assert.False((bool)o); }
public void TestObject() { var json = @"{""a"": {""first"": 1, ""second"": ""two""}}"; var options = new JsonSerializerOptions(); var converter = new JsonElementInferredTypeConverter(); options.Converters.Add(converter); var result = JsonSerializer.Deserialize <Dictionary <string, object> >(json, options); object o; Assert.True(result.TryGetValue("a", out o)); Assert.IsType <Dictionary <string, object> >(o); var dictionary = (Dictionary <string, object>)o; Assert.True(dictionary.TryGetValue("first", out o)); Assert.IsType <long>(o); Assert.Equal(1, (long)o); Assert.True(dictionary.TryGetValue("second", out o)); Assert.IsType <string>(o); Assert.Equal("two", (string)o); }