ASP.NET Web API - 如何反序列化JSON

Rob*_*XSI 5 c# asp.net rest json asp.net-web-api

我正在尝试使用API​​.

我想在对象中存储以下Request:http://api.swissunihockey.ch/rest/v1.0/clubs/655
问题是,Object已初始化但所有值均为null.

我可以接收数据并生成一个字符串输出.但是对对象的反序列化不起作用.你能帮我吗?

private static async Task RunAsync()
{
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("http://api.swissunihockey.ch/rest/v1.0/clubs/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
        try
        {
            HttpResponseMessage response = await client.GetAsync("615");
            var club = await response.Content.ReadAsAsync<Club>();
            Console.WriteLine(club.Name);
            Console.Read();
        }
        catch (HttpRequestException e)
        {
            if (e.Source != null)
            {
                Console.WriteLine("HttpRequestException source: {0}", e.Source);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我试图存储数据的Club类:

class Club
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Street { get; set; }
    public string Zip { get; set; }
    public string City { get; set; }
    public string Canton { get; set; }
    public string Phone { get; set; }
    public string Url { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

小智 3

您需要另一个包含 Club 的类,该类将被进一步反序列化。

class Response
{
    public Club Club { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后反序列化为

var res = await response.Content.ReadAsAsync<Response>();
var club = res.Club;
Run Code Online (Sandbox Code Playgroud)