尝试挖掘 json 数据时出现以下错误。
使用无效键值访问的 JArray 值:“RateInfos”。预期的数组位置索引。
任何人都可以帮助解决这个问题,我正在尝试获取 currentAllotment: 3 的值,它是从提供的 json 底部向上的 15 行。
customerSessionId: "0ABAA82A-4307-A913-E172-4D238D901107",
numberOfRoomsRequested: 1,
moreResultsAvailable: true,
cacheKey: "-73d4307a:13e174d238d:-10fe",
cacheLocation: "10.186.168.42:7301",
cachedSupplierResponse: {
@matchedLocale: "true",
@matchedCurrency: "true",
@tpidUsed: "5101",
@otherOverheadTime: "1",
@candidatePreptime: "98",
@supplierResponseTime: "498",
@supplierResponseNum: "1",
@supplierRequestNum: "207",
@cachedTime: "0",
@supplierCacheTolerance: "NOT_SUPPORTED"
},
HotelList: {
@activePropertyCount: "224",
@size: "1",
HotelSummary: {
@ubsScore: "15815285",
@order: "0",
hotelId: 161395,
name: "Larkspur Landing Bellevue - An All-Suite Hotel",
address1: "15805 Se 37th St",
city: "Bellevue",
stateProvinceCode: "WA",
postalCode: 98006,
countryCode: "US",
airportCode: "SEA",
supplierType: "E",
propertyCategory: 1,
hotelRating: 3,
confidenceRating: 95,
amenityMask: 7823362,
tripAdvisorRating: 4,
tripAdvisorReviewCount: 81,
tripAdvisorRatingUrl: "http://www.tripadvisor.com/img/cdsi/img2/ratings/traveler/4.0-12345-4.gif",
locationDescription: "Near Bellevue College",
shortDescription: "<p><b>Location. </b> <br />Located in Bellevue, Larkspur Landing Bellevue - An All-Suite Hotel is in the suburbs and close to Bellevue College, T-Mobile USA Headquarters, and Factoria Mall. Nearby",
highRate: 64.45,
lowRate: 51.56,
rateCurrencyCode: "GBP",
latitude: 47.57755,
longitude: -122.13193,
proximityDistance: 2.0668056,
proximityUnit: "MI",
hotelInDestination: true,
thumbNailUrl: "/hotels/1000000/130000/127100/127040/127040_14_t.jpg",
deepLink: "http://travel.ian.com/index.jsp?pageName=hotAvail&cid=55505&hotelID=161395&mode=2&numberOfRooms=1&room-0-adult-total=2&room-0-child-total=0&arrivalMonth=4&arrivalDay=17&departureMonth=4&departureDay=19&showInfo=true&locale=en_US&currencyCode=GBP",
RoomRateDetailsList: {
RoomRateDetails: {
roomTypeCode: 200207592,
rateCode: 201183732,
maxRoomOccupancy: 2,
quotedRoomOccupancy: 2,
minGuestAge: 0,
roomDescription: "Studio Suite Accessible",
propertyAvailable: true,
propertyRestricted: false,
expediaPropertyId: 127040,
RateInfos: {
@size: "1",
RateInfo: {
@rateChange: "false",
@promo: "true",
@priceBreakdown: "true",
RoomGroup: {
Room: {
numberOfAdults: 2,
numberOfChildren: 0,
rateKey: "adbdfb1a-df03-4577-9970-ed62f4c84a17"
}
},
ChargeableRateInfo: {
@total: "117.14",
@surchargeTotal: "14.02",
@grossProfitOnline: "18.82",
@grossProfitOffline: "11.21",
@nightlyRateTotal: "103.12",
@maxNightlyRate: "51.56",
@currencyCode: "GBP",
@commissionableUsdTotal: "158.4",
@averageRate: "51.56",
@averageBaseRate: "64.45",
NightlyRatesPerRoom: {
@size: "2",
NightlyRate: {
0: {
@promo: "true",
@rate: "51.56",
@baseRate: "64.45"
},
1: {
@promo: "true",
@rate: "51.56",
@baseRate: "64.45"
}
}
},
Surcharges: {
@size: "1",
Surcharge: {
@amount: "14.02",
@type: "TaxAndServiceFee"
}
}
},
nonRefundable: false,
rateType: "MerchantStandard",
promoId: 202578064,
promoDescription: "Sale! Save 20% on this Stay.",
promoType: "Standard",
currentAllotment: 3
}
},
ValueAdds: {
@size: "1",
ValueAdd: {
@id: "1024",
description: "Free High-Speed Internet"
}
}
}
}
}
}
}
代码行抛出错误。
IList<JToken> rates = root["HotelListResponse"]["HotelList"]["HotelSummary"]["RateInfos"]["RateInfo"].Children().Values().ToList();
如果有人也可以向我展示一种比我正在做的深入研究 json 数据更简单的方法,我将不胜感激。
谢谢乔治