0

API を作成していますが、処理を簡単にするためにデータ モデルをクライアントに送信する必要があるため、クライアント側でも json 構造を実装して維持する必要はなく、新しい空のオブジェクトをシリアル化するだけで済みます。クライアントに渡します。

しかし、nav プロパティ オブジェクトが空の場合、空の配列にシリアル化されるという問題があります。

[]

配列内のオブジェクトではありません。
だから私の質問は、swaggerのドキュメントがどのようにそれを行うかのように、関連するプロパティでオブジェクトをシリアル化するために、誰かが私を正しい方向に向けることができますか?

MVC での基本シリアル化の例: http://pastebin.com/ihF2AeKY

nav props と type を使用した swagger によるシリアル化の例: http://pastebin.com/SxxztnDa

これで、nav props をインスタンス化し、それをオブジェクトに追加してからシリアル化できますが、これは扱いにくく、swagger の例のようにオブジェクトの変更を自動的に追跡することはできません。

編集:

ベースオブジェクトまたはプロップリレーションを変更するとモデルが自動的に追従するため、これは理想的ですが、新しいオブジェクトではプロパティが空であるため、手動で入力しない限り、ナビゲーションプロップは null またはベースの例に示されているように、'[]' のような空のリストなので、nav props 'scheme' は取得せず、ベース オブジェクトのみを取得します。2 番目のペーストビンに示されている完全なツリーを構築するために、ここである種の魔法を行っている Swagger。

[Route("getmodel")]
[HttpGet]
public async Task<Company> GetContactCompanyModel(){
            var ret = new Company();

            return ret;
}

これは一種の機能ですが、プロップを手で挿入する必要があるため不器用ですが、これにより、データが入力されているが空のナビゲーション プロップを含む正しいモデルが返されます。

[Route("getmodel")]
[HttpGet]
public async Task<Company> GetContactCompanyModel(){
            var ret = new Company();
            ret.Peoples.Add(new People { Address = new Address(), PrivateContact = new ContactDetails(), WorkContact = new ContactDetails()});
            ret.ServicePlaces.Add(new ServicePlace { ContactDetails = new ContactDetails(), Address = new Address() });

            return ret;
}

これは私の手作りの new() ボイラープレートの出力です: http://pastebin.com/C4W6Tvsg ご覧のとおり、ナビゲーション プロパティの空のオブジェクトが含まれています。これは、EF がそれを返す方法のようなものです。新しいプロパティやフィールドを追加しても、それをクライアントに送信し、Angular で処理するだけです。

結局のところ、問題は、オブジェクト グラフをトラバースして、そこからスキーマを作成する方法です。これは、オブジェクトを空の状態で熱心にロードする場合と似ています。

このようにもう少し明確になることを願っています。

4

0 に答える 0