2016-03-29 27 views
0

this gibi yanıtlar, HTTP web isteği tarafından döndürülen JSON içeriği için string numaralı adımı atlayarak birkaç adımdan geçiyor gibi görünmektedir; bu, daha sonra seri hale getirme için JSON.net'e geçirilir.JSON.net, HTTP yanıt nesnelerini doğrudan kabul eden sınıflar sağlıyor mu?

Kullanılabilecek herhangi bir kısayol var mı, örn. Herhangi bir API yöntemi WebResponse kabul veya diğer aracı nesneleri? Herhangi bir şey göremedim ama eğer varlarsa biraz daha temiz kodlar yapardı.

cevap

0

Hayır, öyle değil. JSON.net doğrudan HTTP ile karışmıyor. Manuel serileştirme yapmak zorundasınız. Ancak, düzgünlük uğruna RestSharp'ı önerebilir miyim? Kendi kodumu çok daha iyi gösteriyor. ISerializer'ı uygulayabilirsiniz ve bunun içinde, serialize yönteminizin tüm Newtonsoft'ları dahili olarak kullanmasını sağlayın. RestClient, tüm ağır yükleri WebResponse ile ilgili olarak ele alır ve sizin için otomatik olarak seri hale getirecektir. Ve hayır, benim kütüphanem değil.

public IRestResponse<T> Execute<T>(RestRequest request) where T : new() 
{ 
    var response = client.Execute(request); // Client is of type RestClient 
    return JsonConvert.DeserializeObject<T>(response.Content); 
} 
: Eğer bir dize olarak Json.NET geçebilir İçerik özelliği sağladığı için

public class Employee 
{ 
    [JsonProperty(PropertyName = "employee_name")] 
    public string Name { get; set; } 
} 

private IRestResponse<Employee> GetEmployee() 
{ 
    var request = new RestRequest(); 
    request.Resource = "/api/employees" 
    request.Method = Method.GET; 
    var response = Execute<Employee>(request); 
} 

public IRestResponse<T> Execute<T>(RestRequest request) where T : new() 
{ 
    // Pass in reusable ISerializer (can internally use Newtonsoft) 
    request.JsonSerializer = new JsonNetSerializer(); 
    return client.Execute<T>(request); // Client is of type RestClient 
} 

Alternatif olarak, hiç uygulamak bir serileştirici bunu edemez

İlgili konular