예제 #1
0
 public override object Deserialize(JsonElement element)
 {
     _result = JsonElementExtensions.ElementToArray(element, _itemDeserializer)
         .Cast<T>()
         .ToList();
     
     return _result;
 }
예제 #2
0
        public override object Deserialize(JsonElement element)
        {
            if (element.ValueKind != JsonValueKind.Object) {
                throw new IllegalStateException($"expected {nameof(JsonValueKind.Object)}, but received {element.ValueKind}");
            }

            _result = JsonElementExtensions.ElementToDictionary(element);
            return _result;
        }
예제 #3
0
 protected IList<object> DeserializeToList(JsonElement element)
 {
     return JsonElementExtensions
         .ElementToArray(element, e => {
             var baseValue = e.GetString();
             return Enum.Parse(_enumType, baseValue);
             // throw new FormatException("unexpected value for enum \"" + baseValue + "\"");
         });
 }
예제 #4
0
        public void JsonElementToDynamicValueWhenObjectShouldReturnObject()
        {
            // ARRANGE
            var doc = JsonDocument.Parse("{\"str\": \"string\"}");

            // ACT
            var obj = JsonElementExtensions.ToDynamicValue(doc.RootElement) as IDictionary <string, object?>;

            // ASSERT
            Assert.Equal("string", obj?["str"]);
        }
예제 #5
0
        public void JsonElementToDynamicValueWhenDoubleShouldReturnDouble()
        {
            // ARRANGE
            var    doc           = JsonDocument.Parse("{\"int\": 10.5}");
            var    prop          = doc.RootElement.GetProperty("int");
            double expectedValue = 10.5;
            // ACT
            var obj = JsonElementExtensions.ToDynamicValue(prop);

            // ASSERT
            Assert.IsType <double>(obj);
            Assert.Equal(expectedValue, obj);
        }
예제 #6
0
        public void JsonElementToDynamicValueWhenFalseShouldReturnBoolFalse()
        {
            // ARRANGE
            var doc  = JsonDocument.Parse("{\"bool\": false}");
            var prop = doc.RootElement.GetProperty("bool");

            // ACT
            var obj = JsonElementExtensions.ToDynamicValue(prop);

            // ASSERT
            Assert.IsType <bool>(obj);
            Assert.Equal(false, obj);
        }
예제 #7
0
        public void JsonElementToDynamicValueWhenStringShouldReturnString()
        {
            // ARRANGE
            var doc  = JsonDocument.Parse("{\"str\": \"string\"}");
            var prop = doc.RootElement.GetProperty("str");

            // ACT
            var obj = JsonElementExtensions.ToDynamicValue(prop);

            // ASSERT
            Assert.IsType <string>(obj);
            Assert.Equal("string", obj);
        }
예제 #8
0
        public void JsonElementToDynamicValueWhenArrayShouldReturnArray()
        {
            // ARRANGE
            var doc  = JsonDocument.Parse("{\"array\": [\"a\", \"b\", \"c\"]}");
            var prop = doc.RootElement.GetProperty("array");

            // ACT
            var obj = JsonElementExtensions.ToDynamicValue(prop);
            var arr = obj as IEnumerable <object?>;

            // ASSERT
            Assert.NotNull(arr);
            Assert.Equal(3, arr?.Count());
        }