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

时间:2012-11-02 06:52:49

标签: asp.net json asp.net-web-api

我在网上搜索了我的问题没有成功,所以我在这里发帖提问。

我正在使用MVC4 Web API向客户端提供JSON数据。因为C#使用Pascal命名约定,所以默认情况下客户端收到的JSON数据也是Pascal命名约定,如何自定义它以返回JSON中的camel命名约定?

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

3 个答案:

答案 0 :(得分:12)

我知道这是一篇旧帖子,但我认为值得添加对Json.Net的引用:

API Reference

Nuget Page

您可以使用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);

由此产生的Json:

"{
    "myJsonProp" : "value"
}"

答案 1 :(得分:1)

答案 2 :(得分:0)

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