繁体   English   中英

RestSharp XML反序列化到列表中

[英]RestSharp XML Deserialization into List

我试图使用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";};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM