首页 > 解决方案 > 从 Json 创建 C# 类

问题描述

{
"00AK": {
        "icao": "00AK",
        "iata": "",
        "name": "Lowell Field",
        "city": "Anchor Point",
        "state": "Alaska",
        "country": "US",
        "elevation": 450,
        "lat": 59.94919968,
        "lon": -151.695999146,
        "tz": "America\/Anchorage"
    },
    "00AL": {
        "icao": "00AL",
        "iata": "",
        "name": "Epps Airpark",
        "city": "Harvest",
        "state": "Alabama",
        "country": "US",
        "elevation": 820,
        "lat": 34.8647994995,
        "lon": -86.7703018188,
        "tz": "America\/Chicago"
    }
}

希望使用包含世界各地可用机场列表的 json。当我们为上述 json 创建类时,它将为每个机场创建类。

因此,如果是 100k 个机场,则会生成 100k 个具有相似属性的类。有没有办法简化这个?我们可以使用任何泛型吗?

标签: c#json

解决方案


我只是为机场开一个班然后反序列化到一个Dictionary<string,Airport>

这是一个更简单的例子:

    var json =  @"{ ""00AL"": {""elevation"":450}, ""00AK"":{""elevation"":820} }";
    var obj = JsonConvert.DeserializeObject<Dictionary<string,Airport>>(json);
         
    foreach(var item in obj) {
      Console.WriteLine($"{item.Key}={item.Value.Elevation}");
    }
        



public class Airport
{
    [JsonProperty("elevation")]
    public int Elevation { get; set; } 
}

你有一个机场类,你可以枚举结果字典的值。如果 json 添加更多机场,您的字典会获得更多值,但您仍然只有一个机场类


推荐阅读