尝试在 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
循环内部
我正在尝试在 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
循环内部