管理从 web api 以 json 格式返回的属性名称

Posted

技术标签:

【中文标题】管理从 web api 以 json 格式返回的属性名称【英文标题】:managing property names returned in json from web api 【发布时间】:2012-05-30 12:54:26 【问题描述】:

我目前正在使用 ASP.NET web api,在其中我从 REST 操作返回一个模型对象,如下所示:

具有属性的产品:Name, Id, Description, etc.....

当它被转换为JSON 对象时,它会使用上面的属性名称输出它。

要减少从 web api 操作返回的有效负载,有什么方法可以更改 JSON 对象中的属性,例如 DescDescription。我可以更改 Model 对象,但属性名称就没有意义了!

【问题讨论】:

【参考方案1】:

执行此操作的简单方法是通过数据合同。 Here is an article,但基本上,它涉及模型上的两个注释。它还允许您忽略任何您不想序列化的内容。

[DataContract]
public class Foo   //Your model class

   [DataMember(Name="bar-none")]  //This also allows you to use chars like '-'
   public string bar get; set;

   [IgnoreDataMember]  //Don't serialize this one
   public List<string> fuzz  get; set;


【讨论】:

这非常适合我的目的,与 OP 的目的相同。 您可能还需要添加对默认未添加的 System.Runtime.Serialization 的引用。 ***.com/questions/7401795/namespace-for-datacontract【参考方案2】:

您还可以考虑在 asp.net 端使用 http://automapper.org/ 将您的完整对象映射到更轻量级的对象。对于一两个小对象来说可能有点过分了,但如果你有一堆东西要做,这可以为你节省一些时间(免费和开源启动)。

【讨论】:

以上是关于管理从 web api 以 json 格式返回的属性名称的主要内容,如果未能解决你的问题,请参考以下文章

以 XML/JSON 格式返回 Google Analytics Reporting API 结果

快速解析从 API 以 JSON 形式返回的对象

以 JSON 格式返回 API [重复]

从Ember-Data格式化Web API 2的Json

如何以 JSON 格式返回 Glassdoor API

csharp .net Rest Web Api Controller返回JSON格式大小写问题解决