【问题标题】:RestSharp XML Deserialization into ListRestSharp XML 反序列化成列表
【发布时间】:2014-08-22 06:59:30
【问题描述】:

我正在尝试使用 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

}           

【问题讨论】:

  • 我们刚刚发布了新版本的 RestSharp (104.2)。你可以试试看问题是否仍然存在?
  • 我有最新版本。我正在使用 Xamarin Studio,因此该组件是使用内置组件存储安装的。当我将 POCO 更改为 public class RESULTS { public string name {get; set;} } 时,我得到了 XML 中的第一个名字,但没有其他名字..

标签: c# xml rest restsharp


【解决方案1】:

如果是我,我会采用有效的 XML 响应(就像您发布的那个)并使用 Visual Studio 附带的 xsd.exe 程序(它是 VS 命令行工具)从中创建一个类

Generate C# class from XML

然后您可以轻松地序列化和反序列化您的对象。

【讨论】:

  • 我想通了。您必须明确告诉 RestSharp 正在反序列化哪种数据:request.OnBeforeDeserialization = resp =&gt; { resp.ContentType = "application/json"; };
【解决方案2】:

我必须明确告诉 RestSharp 正在反序列化哪种数据:request.OnBeforeDeserialization = resp =&gt; { resp.ContentType = "application/json";};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多