Сериализация/десериализация унаследованых типов
От: Barbar1an Украина  
Дата: 19.01.24 18:06
Оценка:
как это делать стандарным System.Text.Json.Serialization

    class A;
    class B : A;
    class C : A;

    class J
    {
        A a;
    }

    JsonSerializer.Serialize(new J{a = B});
    JsonSerializer.Serialize(new J{a = C});


я попробовал так

    Options = new JsonSerializerOptions{};
    Options.Converters.Add(new AJsonConverter());

    public class AJsonConverter : JsonConverter<A>
    {
        public override void Write(Utf8JsonWriter writer, A value, JsonSerializerOptions options)
        {
            writer.WriteStartObject();
            writer.WritePropertyName(value.GetType().Name);
            writer.WriteRawValue(JsonSerializer.Serialize(value, options));
            writer.WriteEndObject();
        }


    }



попробовал и бросил, потому что нужно передавать options а это приводит к рекурсии
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re: Сериализация/десериализация унаследованых типов
От: Barbar1an Украина  
Дата: 19.01.24 21:13
Оценка: 15 (2)
нашел

https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/polymorphism?pivots=dotnet-8-0
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.