Asp.net 如何在MVC4 Web API中自定义JSON序列化名称?

Asp.net 如何在MVC4 Web API中自定义JSON序列化名称?,asp.net,json,asp.net-web-api,Asp.net,Json,Asp.net Web Api,我在网上搜索了我的问题,但没有成功,所以我把问题贴在这里 我使用MVC4WebAPI向客户端提供JSON数据。由于C#使用Pascal命名约定,因此默认情况下,客户端接收的JSON数据也使用Pascal命名约定,我如何自定义它以返回JSON中的驼峰命名约定 另一个问题是如何更改序列化名称?例如,在C#中,我有一个名为“Description”的属性,但为了减少数据大小,我想在JSON中将其序列化为“descr”,如何实现这一点?这可能不是最好的解决方案,但是在类似的情况下,我刚刚返回了一个jso

我在网上搜索了我的问题,但没有成功,所以我把问题贴在这里

我使用MVC4WebAPI向客户端提供JSON数据。由于C#使用Pascal命名约定,因此默认情况下,客户端接收的JSON数据也使用Pascal命名约定,我如何自定义它以返回JSON中的驼峰命名约定


另一个问题是如何更改序列化名称?例如,在C#中,我有一个名为“Description”的属性,但为了减少数据大小,我想在JSON中将其序列化为“descr”,如何实现这一点?

这可能不是最好的解决方案,但是在类似的情况下,我刚刚返回了一个json格式的字符串,它是我想要的格式,而不是使用自动序列化。您可能可以找到其他序列化库,这些库允许您执行您想要的操作。

这篇文章正好回答了我的问题。

我知道这是一篇老文章,但我认为值得添加对Json.Net的引用:

您可以使用
JsonProperty
属性设置每个属性将序列化到的名称和从中序列化的名称:

public class MyModel
{
    [JsonProperty("myJsonProp")]
    public string MyJsonProperty { get; set; }
}
用法:

//Serialize
var json = Newtonsoft.Json.JsonConvert.SerializeObject(instanceOfMyModel);

//De-serialize
var deserialized = Newtonsoft.Json.JsonConvert.DeSerializeOject<MyModel>(json);

我希望在我的模型对象的每个属性上都有一个属性来声明格式化名称。嗨,奥利弗,你的回答永远不会晚,我发现这是一个非常优雅的解决方案。在你回答我之前,我从来没有想到有这样一个属性!谢谢
"{
    "myJsonProp" : "value"
}"