2010-08-02 16 views
11

Bir JSON nesnesini HttpWebResponse ürününü WebClient.DownloadString() kullanarak kaldırabileceğinizi biliyorum, ancak diğer yöntem nedir? MSDN sayfalarına baktım ve JSON nesnelerine serileştirip serpiştiremeyeceğinizi bilmiyorum, bilen var mı?JSON Serileştirme için WebClient'i Kullanma?

+0

Eğer WebClient sınıfı ile yapmaya çalıştıkları ettiğini gösteren bazı örnek sözde kod sağlayabilir mi? –

+0

JSerials serileştirmek için bir HttpRequest ile gönderebilmem için bir .ascx veya hatta .NET'in dışını söyleyelim. Sadece bunun mümkün olup olmadığını bilmek istiyorum. Bir yol göremiyorum. – PositiveGuy

+0

Cevabımı güncelledim, umarım yardımcı olur. –

cevap

30

WebClient örneğini kullanmadan önce nesneyi JSON'a serileştirmeniz gerekebilir. Bu İşte

var url = "..."; 
var json = JsonHelper.ToJson(myObject); 

var response = PostJson(url, json); 

yardımcı WebClient sınıfından JSON veri gönderme bir örnek Umut: Burada

public static string PostJson(string url, string data) 
{ 
    var bytes = Encoding.Default.GetBytes(data); 

    using (var client = new WebClient()) 
    { 
     client.Headers.Add("Content-Type", "application/json"); 
     var response = client.UploadData(url, "POST", bytes); 

     return Encoding.Default.GetString(response); 
    } 
} 

ve JSON'dan/serisi kaldırılmaya nesne seri DataContractJsonSerializer sınıfı kullanan basit bir yardımcı sınıftır.

public static class JsonHelper 
{ 
    public static string ToJson<T>(T instance) 
    { 
     var serializer = new DataContractJsonSerializer(typeof(T)); 
     using (var tempStream = new MemoryStream()) 
     { 
      serializer.WriteObject(tempStream, instance); 
      return Encoding.Default.GetString(tempStream.ToArray()); 
     } 
    } 

    public static T FromJson<T>(string json) 
    { 
     var serializer = new DataContractJsonSerializer(typeof(T)); 
     using (var tempStream = new MemoryStream(Encoding.Unicode.GetBytes(json))) 
     { 
      return (T)serializer.ReadObject(tempStream); 
     } 
    } 
} 
+0

Evet, ancak WebClient nesnesini burada soruyorum. Mümkün olup olmadığını anlamaya çalışıyordum ama dışarıda bir şey göremedim ama o nesneyi serileştirebilmek için ... sadece serileştirmek. – PositiveGuy

+0

+1 .. Teşekkürler .. Sizin Ans bana yardımcı oldu ... – RajeshKdev

4

kullandığım:

var json = new JavaScriptSerializer().Serialize(yourObject); 
+0

Reddetmek için güzel olurdu – Guillaume86

İlgili konular