Как десериализовать JSON объект, сгруппировав его свойства в разные типы в. NET Core? - PullRequest
2 голосов
/ 17 марта 2020

Я хочу получить некоторые футбольные данные из внешнего интерфейса API. Ответ на запросы возвращает мне таблицу «команды», как показано ниже:

    "teams": [
        {
            "team_id": 2,
            "name": "France",
            "code": null,
            "logo": null,
            "country": "France",
            "is_national": true,
            "founded": 1919,
            "venue_name": "Stade de France",
            "venue_surface": "grass",
            "venue_address": "Rue Jules Rimet, Saint-Denis",
            "venue_city": "Paris",
            "venue_capacity": 81338
        },
        .....

Команда содержит 5 полей места проведения, и я хотел бы сгруппировать их в другой класс, объединенный командой. Вот код:

public class TeamEntity
{
    [Key]
    public int TeamId { get; set; }
    [Required]
    [MaxLength(100)]
    public string Name { get; set; }
    [MaxLength(10)]
    [Column(TypeName = "varchar(10)")]
    public string Code { get; set; }
    [Required]
    [MaxLength(300)]
    public string Logo { get; set; }
    [Required]
    [MaxLength(100)]
    public string Country { get; set; }
    public string IsNational { get; set; }
    [Required]
    public int Founded { get; set; }
    [Required]
    public VenueEntity Venue { get; set; }
    [ForeignKey("Venue")]
    public int VenueId { get; set; }
    public LeagueEntity League { get; set; }
    [ForeignKey("League")]
    public int LeagueId { get; set; }
}


public class VenueEntity
{
    [Key]
    public int VenueId { get; set; }
    [Required]
    [MaxLength(200)]
    public string VenueName { get; set; }
    [Required]
    [MaxLength(100)]
    public string VenueSurface { get; set; }
    [Required]
    [MaxLength(200)]
    public string VenueAddress { get; set; }
    [Required]
    [MaxLength(100)]
    public string VenueCity { get; set; }
    [Required]
    public int VenueCapacity { get; set; }
    [Required]
    public TeamEntity Team { get; set; }
    [ForeignKey("Team")]
    public int TeamId { get; set; }
}

Когда я пытаюсь десериализовать его, я получаю ошибку. Я проверил с помощью отладчика, что поле Venue в классе TeamEntity является нулевым после десериализации. Есть ли способ правильно десериализовать объект с помощью Newtonsoft. Json .JsonConverter? Спасибо за любую помощь.

...