예제 #1
0
        public void ReadWithCustomDiscriminator()
        {
            JsonSerializerOptions options = new JsonSerializerOptions();

            options.SetupExtensions();
            DiscriminatorConventionRegistry registry = options.GetDiscriminatorConventionRegistry();

            registry.RegisterConvention(new CustomDiscriminatorConvention());
            registry.RegisterType(typeof(NameObject2));

            const string      json = @"{""BaseObject"":{""type"":263970807,""Name"":""foo"",""Id"":1}}";
            BaseObjectHolder2 obj  = JsonSerializer.Deserialize <BaseObjectHolder2>(json, options);

            Assert.NotNull(obj);
            Assert.IsType <NameObject2>(obj.BaseObject);
            Assert.Equal("foo", ((NameObject2)obj.BaseObject).Name);
            Assert.Equal(1, obj.BaseObject.Id);
        }
예제 #2
0
        public void WriteWithCustomDiscriminator()
        {
            JsonSerializerOptions options = new JsonSerializerOptions();

            options.SetupExtensions();
            DiscriminatorConventionRegistry registry = options.GetDiscriminatorConventionRegistry();

            registry.RegisterConvention(new CustomDiscriminatorConvention());
            registry.RegisterType(typeof(NameObject2));

            BaseObjectHolder2 obj = new BaseObjectHolder2
            {
                BaseObject = new NameObject2
                {
                    Id   = 1,
                    Name = "foo"
                },
            };

            string       actual   = JsonSerializer.Serialize(obj, options);
            const string expected = @"{""BaseObject"":{""type"":263970807,""Name"":""foo"",""Id"":1},""NameObject"":null}";

            Assert.Equal(expected, actual);
        }