2012-02-05 21 views
3

我主持使用這樣的代碼服務JSON-deserialised對象(外殼):我如何控制屬性的名稱通過服務/ WebInvoke方法

// Set up the test service 
testServiceHost = new WebServiceHost(typeof(TestTrelloService), testServiceAddress); 
testServiceHost.Open(); 

而且我發送一個看跌RestSharp,到這樣的方法:

[OperationContract] 
[WebInvoke(Method = "PUT", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "cards/{cardId}?key={key}")] 
public void UpdateCard(string key, string cardId, Card updatedCard) 
{ 
    // ... 
} 

keycardId從URL /查詢字符串的到來,並且updatedCard是請求體(一個或多個JSON)。

public class Card 
{ 
    public string id { get; set; } 
    // ... 
} 

在體內傳遞的JSON數據正確deserialised與id PROPERT集Card對象:如果我的卡類看起來像這樣

,一切工作正常。

但是,我希望我的班級擁有不同的套管。它實際上是這樣的:

public class Card 
{ 
    public string Id { get; set; } 
} 

但是,這是行不通的。我嘗試添加各種屬性來嘗試和控制此(包括[DataMember(Name="id")]),但似乎沒有任何工作。

有沒有一種方法可以控制爲我的WebInvoke /服務方法完成的JSON反序列化的屬性名稱?

回答

1

好吧,現在我感到跛腳......我修好了!

[DataContract] 
public class Card 
{ 
    [DataMember(Name = "id")] 
    public string Id { get; set; } 
} 

我錯過了DataContract屬性,這似乎爲它讀取DataMember屬性需要!