2017-04-10 50 views
2

我連接到saber InstaFlight API並獲得JSON結果。輸出字符串太長,我可以得到它們的值。但我的方式是採取大量的內存存儲。我想要一種在VB.NET中佔用更少內存和動態方式的方法。如何處理軍刀InstaFlight API JSON響應

下面的代碼工作正常,沒有錯誤:

response2 = DirectCast(postReq.GetResponse(), HttpWebResponse) 
reader2 = New StreamReader(response2.GetResponseStream()) 
postReq.ContentType = "application/json; charset=utf-8" 
Dim ser1 As JObject = JObject.Parse(reader2.ReadToEnd()) 

我能得到這樣的價值觀,沒有錯誤:

ElapseTime1 = ser1("PricedItineraries")(0)("AirItinerary")("OriginDestinationOptions")("OriginDestinationOption")(0)("ElapsedTime").Value(Of String)() 

然而,它得到的是你需要一個點數百個變量,這不是正確的方法。

輸出JSON的例子:

{ "PricedItineraries": [ { "AirItinerary": { "OriginDestinationOptions": { "OriginDestinationOption": [ { "FlightSegment": [ { "DepartureAirport": { "LocationCode": "JFK" }, "ArrivalAirport": { "LocationCode": "LAS" }, "MarketingAirline": { "Code": "AS" }, "ArrivalTimeZone": { "GMTOffset": -7 }, "TPA_Extensions": { "eTicket": { "Ind": true } }, "StopQuantity": 0, "ElapsedTime": 344, "ResBookDesigCode": "R", "MarriageGrp": "O", "Equipment": { "AirEquipType": 320 }, "DepartureDateTime": "2017-07-07T09:30:00", "ArrivalDateTime": "2017-07-07T12:14:00", "FlightNumber": 1251, "OnTimePerformance": { "Percentage": 70 }, "OperatingAirline": { "CompanyShortName": "VIRGIN AMERICA", "FlightNumber": 251, "Code": "VX" }, "DepartureTimeZone": { "GMTOffset": -4 } }, { "DepartureAirport": { "LocationCode": "LAS" }, "ArrivalAirport": { "LocationCode": "LAX" }, "MarketingAirline": { "Code": "AS" }, "ArrivalTimeZone": { "GMTOffset": -7 }, "TPA_Extensions": { "eTicket": { "Ind": true } }, "StopQuantity": 0, "ElapsedTime": 85, "ResBookDesigCode": "R", "MarriageGrp": "O", "Equipment": { "AirEquipType": 320 }, "DepartureDateTime": "2017-07-07T14:45:00", "ArrivalDateTime": "2017-07-07T16:10:00", "FlightNumber": 1475, "OnTimePerformance": { "Percentage": 36 }, "OperatingAirline": { "CompanyShortName": "VIRGIN AMERICA", "FlightNumber": 475, "Code": "VX" }, "DepartureTimeZone": { "GMTOffset": -7 } } ], "ElapsedTime": 580 }, { "FlightSegment": [ { "DepartureAirport": { "LocationCode": "LAX" }, "ArrivalAirport": { "LocationCode": "LAS" }, "MarketingAirline": { "Code": "AS" }, "ArrivalTimeZone": { "GMTOffset": -7 }, "TPA_Extensions": { "eTicket": { "Ind": true } }, "StopQuantity": 0, "ElapsedTime": 71, "ResBookDesigCode": "R", "MarriageGrp": "O", "Equipment": { "AirEquipType": 320 }, "DepartureDateTime": "2017-07-08T17:00:00", "ArrivalDateTime": "2017-07-08T18:11:00", "FlightNumber": 1480, "OnTimePerformance": { "Percentage": 55 }, "OperatingAirline": { "CompanyShortName": "VIRGIN AMERICA", "FlightNumber": 480, "Code": "VX" }, "DepartureTimeZone": { "GMTOffset": -7 } }, { "DepartureAirport": { "LocationCode": "LAS" }, "ArrivalAirport": { "LocationCode": "JFK" }, "MarketingAirline": { "Code": "AS" }, "ArrivalTimeZone": { "GMTOffset": -4 }, "TPA_Extensions": { "eTicket": { "Ind": true } }, "StopQuantity": 0,

+1

你應該考慮你的冷凝JSON的提問。請參閱如何創建[MCVE]。 – Bugs

回答

1

我認爲你需要創建此結果的模型。根據這個JSON,你必須創建一個類模型。

如果你有這樣的JSON:

{ 
"dailyDealId": "432", 
"discountPercentage": "0", 
"product": { 
    "productId": "10", 
    "brandId": "10", 
    "departmentId": "3", 
    "name": "Baby Girl Velour Tunic & Snowflake Legging Set", 
    "description": "The pretty set", 
    "url": "http://whatever.whatever.com/files/whatever.tif" 
} 

你需要這種模式:

public class Product 
{ 
    public string productId { get; set; } 
    public string brandId { get; set; } 
    public string departmentId { get; set; } 
    public string name { get; set; } 
    public string description { get; set; } 
    public string url { get; set; } 
} 

public class Data 
{ 
    public string dailyDealId { get; set; } 
    public string discountPercentage { get; set; } 
    public Product product { get; set; } 
}