我正在使用这样的代码托管服务:
// 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)
{
// ...
}
key
和 cardId
来自 url/querystring,而 updatedCard 是请求正文(s JSON)。如果我的 Card 类如下所示,则一切正常:
public class Card
{
public string id { get; set; }
// ...
}
正文中传递的 JSON 数据正确反序列化为
Card
对象与 id
属性集。但是,我希望我的类(class)在属性上有不同的大小写。它实际上看起来像这样:
public class Card
{
public string Id { get; set; }
}
但是,这不起作用。我尝试添加各种属性来尝试和控制它(包括
[DataMember(Name="id")]
),但似乎没有任何效果。有没有办法可以控制为我的
WebInvoke
完成的 JSON 反序列化的属性名称/服务方法?
最佳答案
好吧,现在我觉得很蹩脚……我修好了!
[DataContract]
public class Card
{
[DataMember(Name = "id")]
public string Id { get; set; }
}
我错过了
DataContract
属性,这似乎是它读取 DataMember
所必需的属性!
关于.net - 如何通过 service/WebInvoke 方法控制 JSON 反序列化对象的属性名称(大小写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9149606/