首页 > 解决方案 > 如何反序列化 JSON 对象,将其属性分组为 .NET Core 中的不同类型?

问题描述

我想从外部 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; }
}

当我试图反序列化它时,我得到一个错误。我使用调试器检查了反序列化后 TeamEntity 类中的 Venue 字段为空。有没有办法使用 Newtonsoft.Json.JsonConverter 正确反序列化对象?谢谢你的帮助。

标签: c#json.net-coredeserialization

解决方案


推荐阅读