Сериализовать список со свойствами, используя .NET System.Text.JsonC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Сериализовать список со свойствами, используя .NET System.Text.Json

Сообщение Anonymous »

Как я могу позволить сериализатору JSON игнорировать перечисление класса и сериализовать его как объект и перечислить только его свойства?
Вот пример моей проблемы:

Код: Выделить всё

public class ObjectList : IEnumerable where T : class
{
public ObjectList()
{
this.Items = new List();
}

public string Group { get; set; }
public int Count { get => this.Items.Count; set { } }
public List Items { get; set; }

public IEnumerator GetEnumerator() { return this.Items.GetEnumerator(); }
IEnumerator IEnumerable.GetEnumerator() { return this.Items.GetEnumerator(); }
}

public class ItemList : ObjectList
{
}
Предполагая следующее содержание:

Код: Выделить всё

var list = new ItemList()
{
Group = "Group",
Items = new List()
{
new ListItem() { Name = "Foo"},
new ListItem() { Name = "Bar"},
}
};
Теперь, когда я сериализую контент с помощью этого кода:

Код: Выделить всё

var txt = System.Text.Json.JsonSerializer.Serialize(list, new JsonSerializerOptions()
{ WriteIndented = true, });
Console.WriteLine(txt);
Я получаю следующий результат

Код: Выделить всё

[ { "Name": "Foo" }, { "Name": "Bar" } ]
Свойства объекта списка (

Код: Выделить всё

Group, Count, Items
) не указаны. Результат, который я ожидаю, будет следующим:

Код: Выделить всё

{
"Group": "Group",
"Count": 2,
"Items": [ { "Name": "Foo" }, { "Name": "Bar" } ]
}
Удалить перечисление из основного класса невозможно. Поэтому мне нужно указать сериализатору обрабатывать класс ItemList как объект, а не как перечисление.
Можете ли вы мне помочь в этом вопросе?
Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -text-json
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»