【发布时间】:2016-06-09 15:36:23
【问题描述】:
我正在尝试在 C# 中反序列化一些 JSON,但是当我运行我的程序时,我收到了以下错误消息:
我查看了所有代码,但在任何不应该有的地方都找不到“http://forecast.weather.gov/MapClick.php?lat=47.1211&lon=-88.5694&FcstType=json, 并且没有“
var http = new HttpClient();
var url = "http://forecast.weather.gov/MapClick.php?lat=47.1211&lon=-88.5694&FcstType=json";
var response = await http.GetAsync(url);
var result = await response.Content.ReadAsStringAsync();
var serializer = new DataContractJsonSerializer(typeof(RootObject2));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(result));
var data = (RootObject2)serializer.ReadObject(ms);
return data;
【问题讨论】:
-
与其访问您从中获取它的网址,不如在调试器中查看您实际收到的内容?当您从 C# 获取与在浏览器中访问它时,服务器上的某些东西可能会为您提供不同的结果。理想情况下,提供minimal reproducible example。
-
我们能看到您将 json 读入字符串的部分和反序列化调用的行吗?
-
我想说你有合理的机会从forecast.weather.gov/… 获得xml,而不是从forecast.weather.gov/… 获得json,但乔恩(当然!)绝对正确 - 更好地调试你是什么实际上是在尝试序列化而不是推测
-
@JonSkeet 我如何在调试器中查看我实际得到的结果?抱歉,我对此很陌生。
-
好吧,鉴于您没有显示任何代码,很难说确切,但一般来说,您会在收到数据,但在您尝试将其解析为 JSON 之前。然后查看 locals/watch 窗口中的变量。
标签: c# json deserialization