首页 > 解决方案 > .NET NewtonSoft JSON 使用不同的属性名称反序列化

问题描述

我有以下从 API 接收的 JSON 字符串,它具有不同的属性名称:

{
 "countryitems": [
            {
                    "1": {
                            "ourid": 1,
                            "title": "AF",
                            "code": "AF",
                            "source": "https://localhost:44301/",
                            "total_cases": 34366,
                            "total_recovered": 21135,
                            "total_unresolved": 0,
                            "total_deaths": 994,
                            "total_new_cases_today": 0,
                            "total_new_deaths_today": 0,
                            "total_active_cases": 0,
                            "total_serious_cases": 12237
                    },
                    "182": {
                            "ourid": 193,
                            "title": "NV",
                            "code": "NV",
                            "source": "https://localhost:44301/",
                            "total_cases": 370,
                            "total_recovered": 350,
                            "total_unresolved": 0,
                            "total_deaths": 0,
                            "total_new_cases_today": 0,
                            "total_new_deaths_today": 0,
                            "total_active_cases": 0,
                            "total_serious_cases": 20
                    },
                    "stat": "ok"
            }
    ]
}

映射类:

public class RootObjectCountry
{
       public IList<countryitems> countryitems { get; set; }

}
 public class countryitems
{
    public string stat { get; set; }

    public Dictionary<string, Data> results { get; set; }
}
public class Data
{
    [JsonProperty(PropertyName = "ourid")]
    public int ourid { get; set; }
    
    [JsonProperty(PropertyName = "title")]
    public string title { get; set; }

    [JsonProperty(PropertyName = "code")]
    public string code { get; set; }

    [JsonProperty(PropertyName = "total_cases")]
    public int total_cases { get; set; }

    [JsonProperty(PropertyName = "total_recovered")]
    public int total_recovered { get; set; }

    [JsonProperty(PropertyName = "total_deaths")]
    public int total_deaths { get; set; }

    [JsonProperty(PropertyName = "total_new_cases_today")]
    public int total_new_cases_today { get; set; }

    [JsonProperty(PropertyName = "total_new_deaths_today")]
    public int total_new_deaths_today { get; set; }

    [JsonProperty(PropertyName = "total_active_cases")]
    public int total_active_cases { get; set; }

    [JsonProperty(PropertyName = "total_serious_cases")]
    public int total_serious_cases { get; set; }

    [JsonProperty(PropertyName = "stat")]
    public string stat { get; set; }

}

我正在使用上述映射类。由于属性的动态特性,映射无法按预期工作

 var jsonString = await httpResponse.Content.ReadAsStringAsync();
 var CountryData = JsonConvert.DeserializeObject<RootObjectCountry>(jsonString);

如何反序列化具有不同属性名称的嵌套 JSON?提前致谢

标签: jsonjson.netasp.net-core-mvcjsonconvert

解决方案


推荐阅读