2016-04-01 28 views
0

C# başvurumda bir PUT isteği göndermeye çalışıyorum ve isteğin gövdesi JSON biçiminde olmalıdır. Yapılacaklar böyle yani, çok basit biçimindeki JSON yükleri için sadece iyi çalışıyoruz:C# içinde iç içe JSON yüküyle PUT isteği nasıl gönderilir?

{ 
    id: 1, 
    title: 'foo', 
    body: 'bar', 
    userId: 1 
} 

bu özelliktir senaryoyu ele yazdım kodudur: ben istersem, Şimdi

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
request.Method = "PUT"; 
request.ContentType = "application/json"; 
using (var streamWriter = new StreamWriter(request.GetRequestStream())) 
{ 
     var serializer = new JavaScriptSerializer(); 
     string json = serializer.Serialize(new 
     { 
      id = "1", 
      title = "foo", 
      body = "bar", 
      userId = "1" 
     }); 
     streamWriter.Write(json); 
} 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

farklı bir JSON biçimiyle bir yük oluşturmak Böyle:

var serializer = new JavaScriptSerializer(); 
var serializer1 = new JavaScriptSerializer(); 
string json = serializer.Serialize(new 
{ 
    object = serializer1.Serialize(new 
    { 
      test = "test" 
      title = "foo", 
      body = "bar", 
      userId = "1" 
     }),    
}); 

Ama çok verimli görünmüyor:

{ 
    object = 
    { 
     id = "1" 
     title = "foo", 
     body = "bar", 
     userId = "1" 
    } 
} 

Ben iki kez seri hale getirmek için yani var. Bunu yapmanın daha iyi bir yolu var mı?

+0

Bu eski diziselleştiriciyi kullanıyor musunuz? –

+0

@ MatíasFidemraizer evet, ilk kez C# kullanarak benim için ilk ve bu MSDN belgelerine baktığım ilk sonuç:/İyi olduğunu düşündüğümden daha iyi seçenekler olduğunu bildiğimden – user1301428

cevap

2

Json.NET gibi JavaScriptSerializer'dan daha iyi bir şey kullanmanız daha iyi. Ama yine de bile bu numarayı sen iki kez seri gerekmez sadece yapın: İki kez seri hale

string json = serializer.Serialize(new { 
    @object = new 
    { 
     id = "1", 
     title = "foo", 
     body = "bar", 
     userId = "1" 
    }}); 

Aslında yanlış json üretmek: "nesne" sadece bir dize içeren json değil json nesnesi olacaktır.

+0

Simpler düşündüm, teşekkür ederim :) – user1301428

1

Çift serileştirmeye ihtiyacınız yoktur. Serileştirmeniz gereken nesne

new { 
    @object = new { 
     id = "1", 
     title = "foo", 
     body = "bar", 
     userId = "1" 
    } 
} 
İlgili konular