0

私のWebAPIは、Domainオブジェクトとは異なるオブジェクトのセットを返しています。たとえば、ドメインにEmployeeクラスがありますが、APIでEmployeeクラスのすべてのメンバーを公開したくないので、EmployeeApiModelという別のクラスを作成しました。

これで、WebApiはEmployeeApiModelのリストを返しますが、シリアル化先の名前を指定できるようにしたいと思います。これは、xmlのタグの代わりに、シリアル化されている基になるクラスがEmployeeApiModelであるという事実を変更せず<EmployeeApiModel>に取得したいと思います。<Employee>

どうすればこれを達成できますか?

4

2 に答える 2

3

技術的には、Web Apiはコンテンツネゴシエーションメカニズムに基づいてjsonとxmlの両方をサポートします。Jsonがデフォルトの形式です。xmlを受信する場合は、ヘッダーを配置するだけです。

受け入れる:application / xml

より多くのコンテンツネゴシエーションを理解するには、これにアクセスしてください

APIでjsonとxmlの両方をサポートする必要があるため、モデルのシリアル化にはDataContractとDataMember属性を使用する必要があります:EmployeeApiModel、次のようになります。

[DataContract(Name = "Employee")]
public class EmployeeApiModel
{
    [DataMember(Name = "Name2")]
    public string Name { get; set; }

    [DataMember]
    public string Email { get; set; }
}

このブログ投稿でもっと見る

于 2012-08-09T15:22:23.917 に答える
0

さまざまな属性タグを使用して、シリアル化されたXMLの出力を制御できます。

[XmlRoot("Employee")]
Public class EmployeeApiModel
{
    [XmlElement("fname")]
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int age { get; set; }
}

これにより、次のようなXMLが生成されます。

<Employee>
    <fname>John</fname>
     <LastName >Smith</LastName >
    <age>24</age>  
</RootElementsName>

さまざまなXML修飾子の詳細については、http://msdn.microsoft.com/en-us/library/e123c76wを参照してください。

JSONに既存のXML修飾子を使用する場合は、次の投稿を確認してください:xml属性を使用して制御される.Netオブジェクトをjsonにシリアル化する

于 2012-08-09T14:58:18.283 に答える