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

标签 .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属性集。

但是,我希望我的类(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/

相关文章:

c# - 如何从 byte[] 中读取整数

c# - .NET 图像压缩

.net - WPF:从 UserControl 转换为 CustomControl

每个方法调用的WCF CreateChannel

c# - WCF SSL 配置可能错误

c# - WCF OperationContract - 我应该公开哪种通用集合类型?

json - 使用不同的键解码相同的 json 对象以进行 slice 结构

c# - 在从 DataTable 填充的组合框中选择一个值

java - 将 JsonElement addProperty() 合并到一个方法中

javascript - 使用 jQuery 从 JSON 访问数据