Web API更改架构名称

时间:2013-06-05 21:20:24

标签: asp.net-web-api

我有一个由jSON和XML客户端使用的asp.net(get)Web API。是否有任何类型的属性我可以用我的代码来装饰它将改变各种XML模式和JSON对象名称?

[WhatGoesHere("Record")]
public class AbcRecord
{
    public bool IsVaid { get; set; }
    [WhatGoesHere("Items")]
    public IEnumerable<AbcItem> AbcItems { get; set; }
}
<Record xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MobilePortal.Library">
  <IsVaid>true</IsVaid>
  <Items>
    ...
  </Items>
</Record>

或等效的JSON

2 个答案:

答案 0 :(得分:3)

Web API的默认XML和JSON格式化程序都支持DataContract和DataMember属性。所以你的类型看起来像这样:

[DataContract(Name = "Record")]
public class AbcRecord
{
    [DataMember]
    public bool IsVaid { get; set; }
    [DataMember(Name = "Items")]
    public IEnumerable<AbcItem> AbcItems { get; set; }
}

答案 1 :(得分:0)

您可以在类上使用此属性来自定义命名空间:

[DataContract(Namespace="http://example.com/namespace")]

我认为默认情况下JSON中不包含任何命名空间,因此该属性不会影响它。