2017-07-12 34 views
0

我正在使用一些使用動態變量的代碼jsonResponse從動態{System.RuntimeType}變量解析json響應時出錯

dynamic jsonResponse = JsonConvert.DeserializeObject(response); 

此變量包含json格式的酒店列表的集合。從這個集合我得到roomlist集合在一個新的變量roomResponseList

var roomResponseList = jsonResponse["hotels"]["hotels"][rooms].roomResponseList; 

我得到的第一個房間的細節到** JObject responseRateKeys **:

foreach (var roomByResponse in roomResponseList) 
{ 
    JObject responseRateKeys = JObject.Parse(roomByResponse.ToString()); 
    var boardNameListByResponse = responseRateKeys.AsJEnumerable().AsEnumerable() 
                .Select(t => t["rates"]["boardName"].ToString().Trim()) 
                .Distinct() 
                .ToList(); 
} 

但是,當我試圖使用LINQ拉姆達得到JObject任何項目列表中,我得到的錯誤, 「無法在Newtonsoft.Json.Linq.JProperty訪問孩子的價值。

價值roomByResponse的=

{ "code": "DBL.KG-NM", "name": "DOUBLE KING BED NON SMOKING", "rates": [ { "rateKey": "20171217|20171219|W|256|237403|DBL.KG-NM|ID_B2B_26|RO|IWH25|1~1~0||[email protected]", "rateClass": "NRF", "rateType": "RECHECK", "net": "186.04", "allotment": 99, "paymentType": "AT_WEB", "packaging": false, "boardCode": "RO", "boardName": "ROOM ONLY", "cancellationPolicies": [ { "amount": "149.63", "from": "2017-07-14T03:29:00+05:30" } ], "rooms": 1, "adults": 1, "children": 0, "dailyRates": [ { "offset": 1, "dailyNet": "93.02" }, { "offset": 2, "dailyNet": "93.02" } ] }, { "rateKey": "20171217|20171219|W|256|237403|DBL.KG-NM|ID_B2B_26|BB|IWB25|1~1~0||[email protected]", "rateClass": "NOR", "rateType": "RECHECK", "net": "238.92", "allotment": 99, "paymentType": "AT_WEB", "packaging": false, "boardCode": "BB", "boardName": "BED AND BREAKFAST", "rooms": 1, "adults": 1, "children": 0, "dailyRates": [ { "offset": 1, "dailyNet": "119.46" }, { "offset": 2, "dailyNet": "119.46" } ] }, { "rateKey": "20171217|20171219|W|256|237403|DBL.KG-NM|ID_B2B_26|RO|IWH25|2~2~1|2|[email protected]", "rateClass": "NRF", "rateType": "RECHECK", "net": "372.06", "allotment": 99, "paymentType": "AT_WEB", "packaging": false, "boardCode": "RO", "boardName": "ROOM ONLY", "cancellationPolicies": [ { "amount": "299.25", "from": "2017-07-14T03:29:00+05:30" } ], "rooms": 2, "adults": 2, "children": 1, "childrenAges": "2", "dailyRates": [ { "offset": 1, "dailyNet": "186.03" }, { "offset": 2, "dailyNet": "186.03" } ] }, { "rateKey": "20171217|20171219|W|256|237403|DBL.KG-NM|ID_B2B_26|BB|IWB25|2~2~1|2|[email protected]", "rateClass": "NOR", "rateType": "RECHECK", "net": "477.84", "allotment": 99, "paymentType": "AT_WEB", "packaging": false, "boardCode": "BB", "boardName": "BED AND BREAKFAST", "rooms": 2, "adults": 2, "children": 1, "childrenAges": "2", "dailyRates": [ { "offset": 1, "dailyNet": "238.92" }, { "offset": 2, "dailyNet": "238.92" } ] } ] } 

謝謝 Pravesh辛格

回答

0

變化的LINQ to

responseRateKeys["rates"].AsJEnumerable().Select(t=>t["boardName"]).Distinct().ToList()