RestSharp XML 反序列化为 List
本文关键字:List 反序列化 XML RestSharp | 更新日期: 2023-09-27 18:31:56
我正在尝试使用 RestSharp 反序列化以下 xml,但我总是得到一个空元素列表。我是基于 REST 的服务新手,需要一些专家帮助!=)
找到的解决方案:我想通了。你必须明确地告诉 RestSharp 正在反序列化什么样的数据:
request.OnBeforeDeserialization = resp => {
resp.ContentType = "application/json";
};
完整的 XML:http://autocomplete.wunderground.com/aq?query=San%20F&format=xml下面是一些 XML:
<RESULTS>
<name>San Francisco, California</name>
<type>city</type>
<c>US</c>
<zmw>94101.1.99999</zmw>
<tz>America/Los_Angeles</tz>
<tzs>PDT</tzs>
<l>/q/zmw:94101.1.99999</l>
</RESULTS>
这是我的XMLResults类:
public class XMLResults
{
public List<name> names {get; set;}
}
public class name
{
public string city {get; set;}
}
这是我的getWeather方法:
public void getWeather(string query)
{
var client = new RestClient ();
var request = new RestRequest(Method.GET);
client.BaseUrl = "http://autocomplete.wunderground.com";
request.Resource = "aq";
request.AddParameter ("query", query);
request.AddParameter ("format", "xml");
request.RequestFormat = DataFormat.Xml;
var city = client.Execute<XMLResults>(request);
Console.WriteLine (city.Data.names.Count); // Results in 20
}
如果是我,我会采用有效的XML响应(就像你发布的那个)并使用Visual Studio附带的xsd.exe程序从中创建一个类(它是VS命令行工具)
从 XML 生成 C# 类
然后,您可以轻松地序列化和反序列化对象。
我必须明确告诉RestSharp正在反序列化什么样的数据:request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json";};