【问题标题】:Converting a XML Object into JSON from OpenWeatherMap API从 OpenWeatherMap API 将 XML 对象转换为 JSON
【发布时间】:2018-01-16 13:40:15
【问题描述】:

我已经创建了一个基本的 ASP.Net Web 应用程序,我正在尝试使用 OpenWeatherMap API。 (第一次处理 API)。

我掌握的有关 WebAPI 的信息是:

您可以按城市名称每 3 小时搜索 5 天的天气预报。所有天气数据都可以 JSON 和 XML 格式获取。 有可能在 API 响应中接收带有自己的参数(地理坐标/id/名称)的城市/城镇的中心区。例子 接口调用: api.openweathermap.org/data/2.5/forecast?q={城市名称},{国家代码} 参数: q 城市名称和国家代码以逗号分隔,使用 ISO 3166 国家代码 API 调用示例:

api.openweathermap.org/data/2.5/forecast?q=London,us&mode=xml

目前,当我使用返回 json 对象的 api 时,我可以正常工作

api.openweathermap.org/data/2.5/weather?q=London&units=metric

但是,如果我只是将 URL 更改为第一个(返回 XML),我的应用程序将不再从 API 检索数据。

我已经尝试将 mode=xml 修改为 mode=json 但仍然无济于事。

如何使用第一个 Web API?

非常感谢

--编辑:

在我的模型类中,我有以下方法:

string url = "api.openweathermap.org/data/2.5/…;
var client = new WebClient();
var content = client.DownloadString(url); 
var serializer = new JavaScriptSerializer();
var jsonContent = serializer.Deserialize<Object>(content); 

return jsonContent; 

(取出钥匙)然后我从我的角度调用这个方法。但是我不能使用末尾有 =xml 的 api 调用

【问题讨论】:

  • 你用什么代码来获取这些数据?
  • 我正在使用 C#。编辑主要注释以显示一些代码

标签: c# json xml asp.net-mvc


【解决方案1】:

您的问题是当结果以 xml 形式返回时,您正在使用 JavaScriptSerializer 对其进行反序列化。 xml 不是 json,因此 Deserialization 会失败

你需要一个 XmlSerializer 来反序列化结果

以下是一些帮助您入门的代码:

string url = @"http://samples.openweathermap.org/data/2.5/forecast?q=London&appid=b1b15e88fa797225412429c1c50c122a1&mode=xml";
var client = new WebClient();
var content = client.DownloadString(url);

XmlSerializer serializer = new XmlSerializer(typeof(weatherdata));
weatherdata result = null;
using (TextReader reader = new StringReader(content))
{
     result = (weatherdata)serializer.Deserialize(reader);
}

注意 typeof weatherdata - 如果你要反序列化成对象,反序列化成非强类型对象是没有意义的, 注意到你可以用它来做。

如果您不想手动编写强类型模型,请将 xml 结果复制到剪贴板,然后使用 VS(不确定其他版本,但以 2017 为例)工具栏 Edit -&gt; paste special -&gt; Paste xml as classes为你生成强类型类

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-14
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    相关资源
    最近更新 更多