繁体   English   中英

将 JSON 反序列化为 C# Object

[英]Deserializing JSON into C# Object

我正在尝试将 json object 反序列化为 c# object 并列出 Itinerary 项目。

这是我的 json object:

{
    "data": {
        "Itineraries": [
        {
           "isDomestic": false,
           "departureAirport": "IKA",
           "arrivalAirport": "IST"
         },
         {
           "isDomestic": false,
           "departureAirport": "IST",
           "arrivalAirport": "LAX"
         }
      ]
    }
}

这是我使用的 c# 类

public class Data
{
    public List<itineraries> itineraries { get; set; } = new List<itineraries>();
  
}
public class itineraries
{
    public bool isDomestic { get; set; }
    public string departureAirport { get; set; }
    public string arrivalAirport { get; set; }
}

这是我用来反序列化的代码

Data availableData= JsonSerializer.Deserialize<Data>(json);

foreach (var item in availableData.itineraries){
   Console.WriteLine($"departureAirport:{item.departureAirport}");
}

但是我无法列出行程。

试试这个课程

public class Itinerary
    {
        public bool isDomestic { get; set; }
        public string departureAirport { get; set; }
        public string arrivalAirport { get; set; }
    }

    public class Data
    {
        public List<Itinerary> Itineraries { get; set; }
    }

    public class Root
    {
        public Data data { get; set; }
    }

和代码

var availableData= JsonSerializer.Deserialize<Root>(json);

foreach (var item in availableData.data.Itineraries)
    {
        Console.WriteLine($"departureAirport:{item.departureAirport}");
    }

首先,你必须从 NuGet Manager 安装 Newtonsoft.Json 然后使用这些类而不是你的

  public class Itinerary
        {
            public bool isDomestic { get; set; }
            public string departureAirport { get; set; }
            public string arrivalAirport { get; set; }
        }

        public class Data
        {
            public List<Itinerary> Itineraries { get; set; }
        }

        public class Root
        {
            public Data data { get; set; }
        }

转换代码是

 var root = JsonConvert.DeserializeObject<Root>(json);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM