我掙扎了一下這個JSON,我的第一個錯誤是:如何返回1個JSON數據
$exception {"Error converting value 167 to type 'Web.Domain.Ean.HotelList'. Path '', line 1, position 3."} System.Exception {Newtonsoft.Json.JsonSerializationException}
所以我一直在努力試圖得到它的工作方式不同,現在我認爲我已經完成了我的代碼,現在我得到這個錯誤。
Cannot implicitly convert type 'string' to 'System.Collections.Generic.IEnumerable<Web.Domain.Ean.HotelCount>'
任何人都可以用一雙嶄新的眼睛關閉,請看一看,看看他們是否能與錯誤幫助,如果可能,也解釋一些JSON理論幫助我學習。
public class HotelCount
{
public string ActivePropertyCount { get; set; }
}
public IEnumerable<HotelCount> GetNumberOfHotels()
{
var numberOfHotelCount = GetHotelsFromEan.GetListOfHotels();
var root = JObject.Parse(numberOfHotelCount.ToString());
IList<JToken> hotelCount = root["HotelListResponse"]["HotelList"].Children().ToList();
IList<HotelCount> count = new List<HotelCount>();
foreach (JToken hotel in hotelCount)
{
HotelCount countHotels = JsonConvert.DeserializeObject<HotelCount>(hotel.ToString());
count.Add(countHotels);
}
var t = count.FirstOrDefault();
//IList<HotelCount> numberOfHotels = hotelCount.Select(count => JsonConvert
// .DeserializeObject<HotelCount>(
// count.SingleOrDefault().ToString())).ToList();
return t.ActivePropertyCount;
}
感謝 喬治
=========================更新代碼========= ======================
public string GetNumberOfHotels()
{
var numberOfHotelCount = GetHotelsFromEan.GetListOfHotels();
var root = JObject.Parse(numberOfHotelCount.ToString());
IList<JToken> hotelCount = root["HotelListResponse"]["HotelList"].Children().ToList();
IList<HotelCount> count = hotelCount.Select(hotel => JsonConvert.DeserializeObject<HotelCount>(hotel.ToString())).ToList();
return count.ToString();
}
===================== =========新更新================================
json值格式爲{「@activePropertyCount」:「167」,「
所以我的課程是:
public class HotelCount
{
public string ActivePropertyCount { get; set; }
}
我最後的錯誤是。
消息=錯誤轉換值167以鍵入'Web.Domain.Ean.HotelCount' 消息=無法強制轉換或從System.Int64轉換爲Web.Domain.Ean.HotelCount。
所以,如果我回到下面的代碼,需要做回ActivePropertyCount
public IEnumerable<HotelCount> GetNumberOfHotels()
{
var numberOfHotelCount = GetHotelsFromEan.GetListOfHotels();
var root = JObject.Parse(numberOfHotelCount.ToString());
IList<JToken> hotelCount = root["HotelListResponse"]["HotelList"].Children().ToList();
IList<HotelCount> count = new List<HotelCount>();
foreach (JToken hotel in hotelCount)
{
HotelCount countHotels = JsonConvert.DeserializeObject<HotelCount>(hotel.FirstOrDefault().ToString());
count.Add(countHotels);
}
return count;
}
的價值是什麼================== ====修正它=========================
public string GetNumberOfHotels()
{
var numberOfHotelCount = GetHotelsFromEan.GetListOfHotels();
var root = JObject.Parse(numberOfHotelCount.ToString());
IList<JToken> hotelCount = root["HotelListResponse"]["HotelList"].Children().Values().ToList();
var s = hotelCount.FirstOrDefault();
var t = s;
// IList<HotelCount> count = hotelCount.Select(hotel => JsonConvert.DeserializeObject<HotelCount>(hotel.FirstOrDefault().ToString()).ActivePropertyCount).ToList();
return t.ToString();
}
嗨Belogix ActivePropertyCount實際上是一些酒店,而不是一個計數。 > json返回@activePropertyCount「:」167「所以@activePropertyCount」作爲字符串返回 – CareerChange
嗨Belogix,仍然收到錯誤:無法強制轉換或從System.String轉換爲Web.Domain.Ean.HotelCount。這行代碼是拋出錯誤:HotelCount countHotels = JsonConvert.DeserializeObject(hotel.ToString()); –
CareerChange
這條線顯示正確的數字foreach(hotelcount中的JToken酒店) – CareerChange