![](/img/trans.png)
[英]InvalidCastException while trying to deserialize JSON in C#
[英]Trying to deserialize Json in c#
我正在嘗試在WCF Web服務中的C#中反序列化JSON,並將其重新打包為列表。 我在Json.NET中使用JObject.Parse。 以下是我用來調用Web服務,獲取JSON並將其放入列表的代碼。
String url = URL to a web service;
HttpWebRequest WebReqOpenPermits = (HttpWebRequest)WebRequest.Create(url);
WebReqOpenPermits.ContentType = "application/json; charset=utf-8";
WebReqOpenPermits.Method = "GET";
HttpWebResponse WebRespOpenPermits = (HttpWebResponse)WebReqOpenPermits.GetResponse();
Stream jsonStream = WebRespOpenPermits.GetResponseStream();
List<routeOpenPermits> permitsList = new List<routeOpenPermits>();
using (StreamReader reader = new StreamReader(jsonStream))
{
string line;
routeOpenPermits routeValues = new routeOpenPermits();
while ((line = reader.ReadLine()) != null)
{
JObject results = JObject.Parse(line);
foreach (var result in results["GetOpenPermitsByIdResult"])
{
routeValues.oAddress = (string)result["oAddress"];
routeValues.oDateIssued = (string)result["oDateIssued"];
routeValues.oPermit = (string)result["oPermit"];
permitsList.Add(routeValues);
}
}
}
此代碼將正確數量的記錄添加到列表中,但是僅將JSON字符串中最后一條記錄的數據添加到列表中。 例如,如果JSON數據包含5條記錄,則所有記錄均添加到列表中,但列表中的數據僅來自JSON字符串中的第五條和最后一條記錄。 第五條記錄中的數據在列表中重復五次。
我做錯了什么? 有沒有更好的方法,因為我願意尋找一種新方法。 我已經搜索了很長一段時間,但找不到解決方案。 感謝您提供的任何幫助,示例,指導或建議。 我對反序列化JSON感到非常沮喪。
您應該移動這行:
routeOpenPermits routeValues = new routeOpenPermits();
進入您的foreach
循環內部
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.