Можете ли вы сериализовать одно свойство содержащихся в коллекции объектов в JSON - PullRequest
0 голосов
/ 28 февраля 2020

Как можно сериализовать только одно свойство объекта при сериализации коллекции объектов этого типа в JSON?

При наличии такой коллекции объектов, как:

public class Person
{
    public int ID;
    public string Name;
}

I хочу сериализовать только ID из каждого экземпляра.

        List<Person> people = new List<Person>();
        people.Add(new Person() { ID = 1, Name = "John" });
        people.Add(new Person() { ID = 2, Name = "Paul" });
        people.Add(new Person() { ID = 3, Name = "George" });
        people.Add(new Person() { ID = 4, Name = "Ringo" });

        string beatlesJson = JsonConvert.SerializeObject(people);

Как показано, он, конечно, сериализует все это так:

[
  {"ID":1,"Name":"John"},
  {"ID":2,"Name":"Paul"},
  {"ID":3,"Name":"George"},
  {"ID":4,"Name":"Ringo"}
]

Я хочу только сериализовать идентификаторы как:

[
  {"ID":1},
  {"ID":2},
  {"ID":3},
  {"ID":4}
]

Есть ли способ сделать это?

Я пытался просто создать список идентификаторов, но он просто сериализован в массив целых чисел, [1,2,3,4] .

1 Ответ

1 голос
/ 28 февраля 2020

Вы можете использовать .Select(x => new {ID = x.ID})

 string beatlesJson = JsonConvert.SerializeObject(people.Select(x => new {ID = x.ID}));

Попробуйте онлайн

Выход:

[
   {"ID":1},
   {"ID":2},
   {"ID":3},
   {"ID":4}
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...