2014-10-10 39 views
0

我想解析JSON響應,所以我創建了一些類。如何從RootObject解析Json?

其實我想腿部航班類元素值。我試圖從RootObject得到那些元素值,但我不知道如何做到這一點。我用Google搜索了一下,但我有點困惑。

我粘貼我的JSON respose,Classes !!

JSON響應:

http://pastebin.com/fjjLxkd2

類:

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; } 
} 

代碼:

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

在這裏,我只拿到了Trip類元素。我需要Leg和Flight類元素。

+0

當你嘗試'obj0.trips.tripOption [0] .slice [0] .segment [0] .leg [0]'時,你會得到什麼? – elolos 2014-10-10 11:25:03

+0

它工作正常但它只給出特定的索引數據。我需要整個航班的航段或航班信息。 – 2014-10-10 11:29:56

回答

0

如果您想查找特定腿的信息,則需要使用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,然後檢索與其關聯的航班或航段。