示例#1
0
        public static void EnumAsString()
        {
            var options = new JsonSerializerOptions();

            options.AddAttribute(typeof(SimpleTestClass), new JsonEnumConverterAttribute(treatAsString: true));

            SimpleTestClass obj = JsonSerializer.Parse <SimpleTestClass>(s_jsonStringEnum, options);

            Assert.Equal(SampleEnum.Two, obj.MyEnum);
        }
示例#2
0
        public static void OverridePropertyNameAndDesignTimeAttributeAtRuntime()
        {
            var options = new JsonSerializerOptions();

            options.AddAttribute(typeof(OverridePropertyNameDesignTime_TestClass).GetProperty("MyInt16"), new JsonPropertyNameAttribute("blah2"));

            OverridePropertyNameDesignTime_TestClass x = JsonSerializer.Read <OverridePropertyNameDesignTime_TestClass>(OverridePropertyNameDesignTime_TestClass.s_dataNotMatchingAttribute, options);

            Assert.Equal(x.MyInt16, 1);
        }
示例#3
0
        public static void OverridePropertyNameAtRuntime()
        {
            var options = new JsonSerializerOptions();

            options.AddAttribute(typeof(OverridePropertyNameRuntime_TestClass), new JsonPropertyNameAttribute("blah"));

            OverridePropertyNameRuntime_TestClass x = JsonSerializer.Read <OverridePropertyNameRuntime_TestClass>(OverridePropertyNameRuntime_TestClass.s_data, options);

            Assert.Equal(x.MyInt16, 1);
        }
示例#4
0
        public static void CamelCaseAttributeRuntime()
        {
            var options = new JsonSerializerOptions();

            options.AddAttribute(typeof(SimpleTestClass), new JsonCamelCasingConverterAttribute());

            SimpleTestClass obj = JsonSerializer.Read <SimpleTestClass>(SimpleTestClassWithCamelCase.s_data, options);

            Assert.Equal(obj.MyInt16, 1);
        }
示例#5
0
        public static void CamelCaseAttributeInheritanceRuntime()
        {
            var options = new JsonSerializerOptions();

            // Add attibute to base class
            options.AddAttribute(typeof(SimpleTestClass), new JsonCamelCasingConverterAttribute());

            SimpleDerivedTestClass obj = JsonSerializer.Parse <SimpleDerivedTestClass>(SimpleTestClassWithCamelCase.s_data, options);

            Assert.Equal(obj.MyInt16, 1);
        }
示例#6
0
        public static void OverrideWriteOnAttribute()
        {
            JsonSerializerOptions      options = new JsonSerializerOptions();
            JsonPropertyValueAttribute attr    = new JsonPropertyValueAttribute();

            attr.IgnoreNullValueOnWrite = true;
            options.AddAttribute(typeof(TestClassWithNull), attr);

            var    input = new TestClassWithNull();
            string json  = JsonSerializer.ToString(input, options);

            Assert.Equal(@"{}", json);
        }
示例#7
0
        public static void OverrideReadOnAttribute()
        {
            JsonSerializerOptions options = new JsonSerializerOptions();
            JsonPropertyAttribute attr    = new JsonPropertyAttribute();

            attr.SkipNullValuesOnRead = true;
            options.AddAttribute(typeof(TestClassWithNullButInitialized), attr);

            TestClassWithNullButInitialized obj = JsonSerializer.ReadString <TestClassWithNullButInitialized>(TestClassWithNullButInitialized.s_json, options);

            Assert.Equal("Hello", obj.MyString);
            Assert.Equal(1, obj.MyInt);
        }