簡體   English   中英

嘗試在C#中反序列化Json

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM