如何通过service / WebInvoke方法控制JSON反序列化对象的属性名称(大小写)

时间:2012-02-05 13:26:05

标签: .net wcf json rest serialization

我正在使用以下代码托管服务:

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

我正在发送一个带有RestSharp的PUT到这样的方法:

[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 / querystring,updatedCard是请求正文(s JSON)。

如果我的Card类看起来像这样,一切正常:

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

正文中传递的JSON数据被正确反序列化为Card对象,并设置了id属性。

但是,我希望我的班级在房产上有不同的套管。它实际上看起来像这样:

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

然而,这不起作用。我尝试添加各种属性来尝试控制它(包括[DataMember(Name="id")]),但似乎没有任何效果。

有没有办法可以控制为WebInvoke / service方法完成的JSON反序列化的属性名称?

1 个答案:

答案 0 :(得分:2)

好吧,现在我觉得自己很蹩脚......我修好了!

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

我错过了DataContract属性,这似乎是阅读DataMember属性所必需的!