【问题标题】:how to customize the JSON serialized name in MVC4 Web API?如何在 MVC4 Web API 中自定义 JSON 序列化名称?
【发布时间】:2012-10-22 20:12:33
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我希望我的模型对象的每个属性上都有一个属性来声明格式化的名称。
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      我知道这是一篇旧帖子,但我认为值得添加对 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"
      }"
      

      【讨论】:

      • 嗨奥利弗,你的回答永远不会迟到,我发现这是一个非常优雅的解决方案。在你回答我之前,我从来没有想过有这样的属性!谢谢。
      猜你喜欢
      • 2020-11-09
      • 2012-12-26
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多