![](/img/trans.png)
[英]How to deserialize JSON request from EXT.NET on ASP.NET Web Api side
[英]ASP.NET Web API - How to deserialize a JSON
我正在嘗試使用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);
}
}
}
}
這是我試圖存儲數據的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; }
}
您需要另一個包含Club的課程,該課程將進一步反序列化。
class Response
{
public Club Club { get; set; }
}
然后反序列化為
var res = await response.Content.ReadAsAsync<Response>();
var club = res.Club;
從響應中獲取字符串后,使用Web API已經從Nuget引用的包,通過Newtonsoft.Json 1引用Json.Net,並調用Club c = JsonConvert.Deserialize<Club>(responseString);
我發現這比已經提到的內置數據合同簡單得多。
嘗試查看與microsoft相關的文檔:
http://msdn.microsoft.com/en-us/library/hh674188.aspx
您需要創建數據協定,然后使用此合同處理請求。
例如,對於您來說,數據合同可能類似於:
[DataContract]
class Club
{
[DataMember(Name = "Id")]
public int Id { get; set; }
[DataMember(Name = "Name")]
public string Name { get; set; }
[DataMember(Name = "Street")]
public string Street { get; set; }
[DataMember(Name = "Zip")]
public string Zip { get; set; }
[DataMember(Name = "City")]
public string City { get; set; }
[DataMember(Name = "Canton")]
public string Canton { get; set; }
[DataMember(Name = "Phone")]
public string Phone { get; set; }
[DataMember(Name = "Url")]
public string Url { get; set; }
}
然后查看文檔的“處理請求”章節來處理您的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.