public static void MultipleConvertersInObjectArray()
        {
            const string expectedJson = @"[""?"",{""TypeDiscriminator"":1,""CreditLimit"":100,""Name"":""C""},null]";

            var options = new JsonSerializerOptions();

            options.Converters.Add(new MyBoolEnumConverter());
            options.Converters.Add(new PersonConverterWithTypeDiscriminator());

            Customer customer = new Customer();

            customer.CreditLimit = 100;
            customer.Name        = "C";

            MyBoolEnum myBoolEnum     = MyBoolEnum.Unknown;
            MyBoolEnum?myNullBoolEnum = null;

            string json = JsonSerializer.Serialize(new object[] { myBoolEnum, customer, myNullBoolEnum }, options);

            Assert.Equal(expectedJson, json);

            JsonElement jsonElement       = JsonSerializer.Deserialize <JsonElement>(json, options);
            string      jsonElementString = jsonElement.ToString();

            Assert.Equal(expectedJson, jsonElementString);
        }
Example #2
0
        public static void CustomEnumConverter()
        {
            var options = new JsonSerializerOptions();

            options.Converters.Add(new MyBoolEnumConverter());

            {
                MyBoolEnum value = JsonSerializer.Deserialize <MyBoolEnum>(@"""TRUE""", options);
                Assert.Equal(MyBoolEnum.True, value);
                Assert.Equal(@"""TRUE""", JsonSerializer.Serialize(value, options));
            }

            {
                MyBoolEnum value = JsonSerializer.Deserialize <MyBoolEnum>(@"""FALSE""", options);
                Assert.Equal(MyBoolEnum.False, value);
                Assert.Equal(@"""FALSE""", JsonSerializer.Serialize(value, options));
            }

            {
                MyBoolEnum value = JsonSerializer.Deserialize <MyBoolEnum>(@"""?""", options);
                Assert.Equal(MyBoolEnum.Unknown, value);
                Assert.Equal(@"""?""", JsonSerializer.Serialize(value, options));
            }
        }