TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.77K subscribers
Post #1899 1.46K
День 1554. #ЗаметкиНаПолях
Как Исключить Свойства при Сериализации в JSON. Начало
Распространённая проблема при сериализации объектов в JSON в том, что результат содержит множество нежелательных свойств. По умолчанию сериализуются все свойства. Однако очень часто нам не нужна вся информация. Рассмотрим, как убрать ненужные свойства при сериализации объекта на примере двух популярных библиотек сериализации System.Text.Json и Newtonsoft.Json.

1. Игнорируем отдельные свойства
Для отдельных свойств можно использовать атрибут [JsonIgnore], чтобы исключить его из вывода при сериализации объекта. Атрибут доступен в пространстве имен System.Text.Json.Serialization или Newtonsoft.Json соответственно:
public class Person
{
[JsonIgnore]
public int Id { get; set; }
public string? Name { get; set; }
public string? LastName { get; set; }
}

var person = new Person()
{
Id = 1,
Name = "John",
LastName = "Smith"
};

var json1 = JsonSerializer.Serialize(person);
var json2 = JsonConvert.SerializeObject(person);

Вывод:
{
"Name": "John",
"LastName": "Smith"
}

2. Условное игнорирование отдельных свойств
Мы также можем применять условия при индивидуальном игнорировании свойства. Для атрибута [JsonIgnore] можно установить свойство Condition . Например,
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public int Id { get; set; }

Доступные значения:
- Always — свойство всегда игнорируется (по умолчанию),
- Never — свойство всегда сериализуется и десериализуется, независимо от глобальных параметров DefaultIgnoreCondition, IgnoreReadOnlyProperties и IgnoreReadOnlyFields,
- WhenWritingDefault — свойство не учитывается при сериализации, если содержит значение по умолчанию для типа (default),
- WhenWritingNull — свойство не учитывается при сериализации, если оно равно null.

В Newtonsoft.Json сериализацию свойства можно настроить с помощью JsonPropertyAttribute.

3. Атрибуты DataContract и DataMember
В некоторых сценариях у нас есть классы со многими свойствами, а мы хотим сериализовать только некоторые из них. При использовании Newtonsoft.Json мы можем добавить атрибут класса [DataContract], а для свойств, которые должны оставаться при сериализации - атрибут [DataMember]. Оба доступны в пространстве имен System.Runtime.Serialization.
public class Customer
{
public int Id { get; set; }
[DataMember]
public string? Name { get; set; }
[DataMember]
public string? LastName { get; set; }
}

var customer = new Customer()
{
Id = 1,
Name = "John",
LastName = "Smith"
};
var json = JsonConvert.SerializeObject(customer);

Вывод:
{ 
"Name": "John",
"LastName": "Smith"
}

Окончание следует…

Источник:
https://code-maze.com/csharp-exclude-properties-from-json-serialization/
  • 👍 25
More from @netdeveloperdiary
  1. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  2. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  3. Oct 10, 2026День 2810. #ЧтоНовенького #VSCode Более Быстрый и Лёгкий C# Dev Kit Мы, разработчики, люби…
  4. Oct 9, 2026День 2809. #Карьера 5 Навыков, Которые Помогут Быстрее Стать Сеньором. Окончание Начало 3.…
  5. Oct 8, 2026День 2808. #Карьера 5 Навыков, Которые Помогут Быстрее Стать Сеньором. Начало В ИТ есть се…
  6. Oct 7, 2026День 2807. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Окончание Нач…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →