2013-10-12 14 views
5

JSON listesini kabul eden dotnet'te (VS 2012) dinlendirici bir web hizmeti oluşturmaya çalışıyorum. Bu çok yardımcı mesaj var.Post JSON Dizisini Boş Parametrelerdeki WCF Rest Hizmeti Sonuçlarına Dönüştür. DataContract?

Jquery Ajax Posting json to webservice

örnek nokta, ama DataContract sıralanmış gerekir.

Kemancı mesajlar: İşte benim problem İşte

{ "Markers": [ 
{ "position": "0", "markerPosition": "0" }, 
{ "position": "0", "markerPosition": "0" }, 
{ "position": "0", "markerPosition": "0" } 
]}; 

(düz bağlantılı örnekten) kodudur:

VS2012 Debugger olarak

{ "Markers": [ 
{ "position": "128.3657142857143", "markerPosition": "7" }, 
{ "position": "235.1944023323615", "markerPosition": "19" }, 
{ "position": "42.5978231292517", "markerPosition": "-3" } 
]}; 

Ben karşılığını görmek

public class Marker 
{ 
    decimal position { get; set; } 
    int markerPosition { get; set; } 
} 

public string CreateMarkers(List<Marker> Markers) 
{ 
    return "Received " + Markers.Count + " markers."; 
} 

Sözleşme İşte:

[OperationContract] 
[WebInvoke(UriTemplate = "Markers", Method = "POST", ResponseFormat = WebMessageFormat.Json, 
RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
string CreateMarkers(List<Marker> Markers); 

Bu, diğer eşit derecede harika sonrası DataContract parametre değerlerini görmek için ayarlanması gerekir açıklıyor:

WCF REST POST of JSON: Parameter is empty

Benim asıl soru verisi sözleşme ne olması gerektiğini oldu. mesajı yapısı sayesinde gelir, ama boş içerik

[OperationContract] 
[WebInvoke(UriTemplate = "Markers", Method = "POST", ResponseFormat =   WebMessageFormat.Json, 
RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
string CreateMarkers(List<Marker> Markers); 

hangi sonra: Ben ile başladı. Daha sonra, öneri üzerine, denedim: ileti yapısı ve içeriği null oldu. İşte

[OperationContract] 
    [WebInvoke(UriTemplate = "WrappedMarkers", Method = "POST", ResponseFormat = WebMessageFormat.Json, 
     RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
    string WrappedMarkers(MarkerRequest wrappedmarkers); 

[DataContract] 
    public class MarkerRequest 
    { 
    [DataMember] 
    public List<Marker> Markers 
    { 
     get { return _markers; } 
     set { _markers = value; } 
    } 

    private List<Marker> _markers = new List<Marker>(); 
} 


public string WrappedMarkers(MarkerRequest wrappedmarkers) 
    { 
     return wrappedmarkers.Markers.ToString(); 
    } 

işlemleri, sözleşmeli WrappedRequest

yapısı doğru olarak değiştirildi, ancak içerik yine boş oldu.

Bire dönüş. Mesajın yapısını görebiliyorum. Yapıya eşlenen içeriği nasıl alabilirim? Veri sınıfına [DataContract] ve [DataMember] niteliğini set vermedi senin yüzünden bilgim par

cevap

8

As '0' değerini alma. Bu attr ekledikten sonra, sınıfınız

+0

Evet. Bu sorunu çözdü. Hemen. Teşekkür ederim! –