C# | Сериализация массива объектов в JSON

Нужно получить вот такую конструкцию:

"players": [
  {
    "player_id": "76561199099565074",
    "availability": 0,
    ...
  }
]

Не могу понять как правильно описать класс. Пробовал вот так:

public class Promocodes
{
    ...

    public string[ Dictionary<string,PlayersClass>?] Players { get; set; }
}

public class PlayersClass
{
    public int PlayerId { get; set; }
    public int availability { get; set; }
}


public class Program
{
    public static void Main()
    {
        var promocodes = new Promocodes
        {
            Players = new Dictionary<int, PlayersClass>
            {
               ["PlaersId"] = new PlayersClass { PlayerId = 1 }
            }
        }
    }
}    

Понимаю что тут все не правильно, скилов не хватает.

С простыми массивам проблем нет, а вот такая конструкция не получается: [{"":""}].


Ответы (1 шт):

Автор решения: iikuzmychov

[{"":""}] - это просто массив объектов.

Воспользуйтесь встроенным сериализатором и добавьте названия полям с помощью JsonPropertyName:

public class Promocode
{
   [JsonPropertyName("players")]
   public Player[] Players { get; set; }
}

public class Player
{
   [JsonPropertyName("player_id")]
   public long PlayerId { get; set; }

   [JsonPropertyName("availability")]
   public int Availability { get; set; }
}
// пример объекта
var promocode = new Promocode
{
    Players = [new Player { PlayerId = 76561199099565074, Availability = 0 }]
};

// сериализация
var json = JsonSerializer.Serialize(promocode);

Результат:

{
  "players": [
    {
      "player_id": 76561199099565074,
      "availability": 0
    }
  ]
}
→ Ссылка