Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1302 of 1492 menu
◀ ▶

JsonSerializable

JsonSerializable ставят на partial класс, наследник JsonSerializerContext - это заказ генератору, а не вызов в рантайме. Сериализация идёт через GateContext.Default.Gate и Serialize. Члены вроде JsonInclude работают как обычно.

Синтаксис

using System.Text.Json.Serialization; [JsonSerializable(typeof(MyType))] partial class MyContext : JsonSerializerContext { }

Пример

Давайте сериализовать через контекст:

using System; using System.Text.Json; using System.Text.Json.Serialization; class Gate { public string Name { get; set; } } [JsonSerializable(typeof(Gate))] partial class GateContext : JsonSerializerContext { } class Program { static void Main() { var gate = new Gate { Name = "abcde" }; string res = JsonSerializer.Serialize( gate, GateContext.Default.Gate); Console.WriteLine(res); } }

Результат выполнения кода:

{"Name":"abcde"}

Пример

Давайте прочитать JSON через контекст:

using System; using System.Text.Json; using System.Text.Json.Serialization; class Gate { public string Name { get; set; } } [JsonSerializable(typeof(Gate))] partial class GateContext : JsonSerializerContext { } class Program { static void Main() { var gate = JsonSerializer.Deserialize( "{\"Name\":\"abcde\"}", GateContext.Default.Gate); string res = gate.Name; Console.WriteLine(res); } }

Результат выполнения кода:

"abcde"

Пример

Давайте объявить контекст как partial класс:

using System; using System.Text.Json.Serialization; class Gate { public string Name { get; set; } } [JsonSerializable(typeof(Gate))] partial class GateContext : JsonSerializerContext { } class Program { static void Main() { bool res = typeof(GateContext).IsAbstract; Console.WriteLine(res); } }

Результат выполнения кода:

False

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить