C# 如何从RootObject解析Json?

C# 如何从RootObject解析Json?,c#,asp.net,json,json.net,C#,Asp.net,Json,Json.net,我试图解析JSON响应,所以创建了一些类 实际上我想要Leg和Flight类元素值。我试图从RootObject获取这些元素的值,但我不知道如何做到这一点。我在谷歌上搜索过,但我有点困惑 我粘贴我的JSON响应,类 JSON响应: 课程: public class Detail { } public class Airport { public string kind { get; set; } public string code { get; set; }

我试图解析JSON响应,所以创建了一些类

实际上我想要LegFlight类元素值。我试图从RootObject获取这些元素的值,但我不知道如何做到这一点。我在谷歌上搜索过,但我有点困惑

我粘贴我的JSON响应,类

JSON响应:

课程:

public class Detail
{

}

  public class Airport
 {
      public string kind { get; set; }
   public string code { get; set; }
   public string city { get; set; }
   public string name { get; set; }
    }

   public class City
  {
     public string kind { get; set; }
    public string code { get; set; }
  public string name { get; set; }
  }

  public class Aircraft
{
public string kind { get; set; }
public string code { get; set; }
public string name { get; set; }
}

 public class Tax
 {
public string kind { get; set; }
public string id { get; set; }
public string name { get; set; }
}

  public class Carrier
 {
public string kind { get; set; }
public string code { get; set; }
public string name { get; set; }
}

 public class Data
{
public string kind { get; set; }
public List<Airport> airport { get; set; }
public List<City> city { get; set; }
public List<Aircraft> aircraft { get; set; }
public List<Tax> tax { get; set; }
public List<Carrier> carrier { get; set; }
 }

 public class Flight
 {
public string carrier { get; set; }
public string number { get; set; }
}

 public class Leg
 {
public string kind { get; set; }
public string id { get; set; }
public string aircraft { get; set; }
public string arrivalTime { get; set; }
public string departureTime { get; set; }
public string origin { get; set; }
public string destination { get; set; }
public string originTerminal { get; set; }
public int duration { get; set; }
public int onTimePerformance { get; set; }
public int mileage { get; set; }
public string meal { get; set; }
public bool secure { get; set; }
public string destinationTerminal { get; set; }
public string operatingDisclosure { get; set; }
 }

 public class Segment
{
public string kind { get; set; }
public int duration { get; set; }
public Flight flight { get; set; }
public string id { get; set; }
public string cabin { get; set; }
public string bookingCode { get; set; }
public int bookingCodeCount { get; set; }
public string marriedSegmentGroup { get; set; }
public List<Leg> leg { get; set; }
public int connectionDuration { get; set; }
}

 public class Slouse
 {
public string kind { get; set; }
public int duration { get; set; }
public List<Segment> segment { get; set; }
 }

  public class Fare
 {
public string kind { get; set; }
public string id { get; set; }
public string carrier { get; set; }
public string origin { get; set; }
public string destination { get; set; }
public string basisCode { get; set; }
 }

  public class BagDescriptor
 {
public string kind { get; set; }
public string commercialName { get; set; }
public int count { get; set; }
public string subcode { get; set; }
public List<string> description { get; set; }
  }

 public class FreeBaggageOption
 {
public string kind { get; set; }
public List<BagDescriptor> bagDescriptor { get; set; }
public int pieces { get; set; }
 }

 public class SegmentPricing
 {
public string kind { get; set; }
public string fareId { get; set; }
public string segmentId { get; set; }
public List<FreeBaggageOption> freeBaggageOption { get; set; }
 }

 public class Passengers
{
public string kind { get; set; }
public int adultCount { get; set; }
}

 public class Tax2
{
public string kind { get; set; }
public string id { get; set; }
public string chargeType { get; set; }
public string code { get; set; }
public string country { get; set; }
public string salePrice { get; set; }
}

 public class Pricing
{
public string kind { get; set; }
public List<Fare> fare { get; set; }
public List<SegmentPricing> segmentPricing { get; set; }
public string baseFareTotal { get; set; }
public string saleFareTotal { get; set; }
public string saleTaxTotal { get; set; }
public string saleTotal { get; set; }
public Passengers passengers { get; set; }
public List<Tax2> tax { get; set; }
public string fareCalculation { get; set; }
public string latestTicketingTime { get; set; }
public string ptc { get; set; }
 }

 public class TripOption
{
public string kind { get; set; }
public string saleTotal { get; set; }
public string id { get; set; }
public List<Slouse> slice { get; set; }
public List<Pricing> pricing { get; set; }
}

 public class Trips
{
public string kind { get; set; }
public string requestId { get; set; }
public Data data { get; set; }
public List<TripOption> tripOption { get; set; }
}

public class RootObject
{
public string kind { get; set; }
public Trips trips { get; set; }
}
公共类详细信息
{
}
公共级机场
{
公共字符串种类{get;set;}
公共字符串代码{get;set;}
公共字符串city{get;set;}
公共字符串名称{get;set;}
}
公营城市
{
公共字符串种类{get;set;}
公共字符串代码{get;set;}
公共字符串名称{get;set;}
}
公共级飞机
{
公共字符串种类{get;set;}
公共字符串代码{get;set;}
公共字符串名称{get;set;}
}
公共类税
{
公共字符串种类{get;set;}
公共字符串id{get;set;}
公共字符串名称{get;set;}
}
公营航空公司
{
公共字符串种类{get;set;}
公共字符串代码{get;set;}
公共字符串名称{get;set;}
}
公共类数据
{
公共字符串种类{get;set;}
公共列表机场{get;set;}
公共列表城市{get;set;}
公共列表飞机{get;set;}
公共列表税{get;set;}
公共列表载体{get;set;}
}
公务舱航班
{
公共字符串载体{get;set;}
公共字符串编号{get;set;}
}
公务舱航段
{
公共字符串种类{get;set;}
公共字符串id{get;set;}
公共字符串{get;set;}
公共字符串到达时间{get;set;}
公共字符串departureTime{get;set;}
公共字符串源{get;set;}
公共字符串目标{get;set;}
公共字符串originTerminal{get;set;}
公共整数持续时间{get;set;}
public int onTimePerformance{get;set;}
公共整数里程数{get;set;}
公共字符串{get;set;}
公共布尔安全{get;set;}
公共字符串destinationTerminal{get;set;}
公共字符串操作公开{get;set;}
}
公共课部分
{
公共字符串种类{get;set;}
公共整数持续时间{get;set;}
公共航班{get;set;}
公共字符串id{get;set;}
公共字符串{get;set;}
公共字符串bookingCode{get;set;}
public int bookingCodeCount{get;set;}
公共字符串marriedSegmentGroup{get;set;}
公共列表分支{get;set;}
公共int连接持续时间{get;set;}
}
公务舱
{
公共字符串种类{get;set;}
公共整数持续时间{get;set;}
公共列表段{get;set;}
}
公务舱票价
{
公共字符串种类{get;set;}
公共字符串id{get;set;}
公共字符串载体{get;set;}
公共字符串源{get;set;}
公共字符串目标{get;set;}
公共字符串基本码{get;set;}
}
公共类描述符
{
公共字符串种类{get;set;}
公共字符串commercialName{get;set;}
公共整数计数{get;set;}
公共字符串子代码{get;set;}
公共列表说明{get;set;}
}
公共类FreeBaggageOption
{
公共字符串种类{get;set;}
公共列表描述符{get;set;}
公共整数块{get;set;}
}
公开课定价
{
公共字符串种类{get;set;}
公共字符串fareId{get;set;}
公共字符串段ID{get;set;}
公共列表freeBaggageOption{get;set;}
}
公务舱乘客
{
公共字符串种类{get;set;}
public int adultCount{get;set;}
}
公共分类税2
{
公共字符串种类{get;set;}
公共字符串id{get;set;}
公共字符串chargeType{get;set;}
公共字符串代码{get;set;}
公共字符串国家{get;set;}
公共字符串salePrice{get;set;}
}
公共类定价
{
公共字符串种类{get;set;}
公共列表票价{get;set;}
公共列表{get;set;}
公共字符串baseFareTotal{get;set;}
公共字符串saleFareTotal{get;set;}
公共字符串saleTaxTotal{get;set;}
公共字符串saleTotal{get;set;}
公共乘客{get;set;}
公共列表税{get;set;}
公共字符串计算{get;set;}
公共字符串latestTicketingTime{get;set;}
公共字符串ptc{get;set;}
}
公共类TripOption
{
公共字符串种类{get;set;}
公共字符串saleTotal{get;set;}
公共字符串id{get;set;}
公共列表切片{get;set;}
公共列表定价{get;set;}
}
公务舱旅行
{
公共字符串种类{get;set;}
公共字符串requestId{get;set;}
公共数据数据{get;set;}
公共列表选项{get;set;}
}
公共类根对象
{
公共字符串种类{get;set;}
公共行程{get;set;}
}
代码:

     var obj0 = JsonConvert.DeserializeObject<RootObject>(responsedata);
var obj0=JsonConvert.DeserializeObject(responsedata);

在这里,我得到了唯一的旅行类元素。我需要Leg和Flight class元素。

如果要查找特定Leg的信息,需要使用
Linq
遍历树。例如,如果您只知道腿部id,则可以执行以下操作:

var allLegs = obj0.trips.tripOption.SelectMany(to => to.slice.SelectMany(sl => sl.segment.Select(sg => sg.leg)));

var leg = allLegs.FirstOrDefault(l => l.id == "yourId");

检索航班的查询类似。您还可以通过
tripOption
id进行筛选,以获取特定的
tripOption
,然后检索与其关联的航班或航段。

尝试
obj0.trips.tripOption[0].slice[0].segment[0]。航段[0]
?它工作正常,但只提供特定的索引数据。我要整个航段或航班信息。