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); }
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); }