私はしばらくの間ExtJでnetTiersを使用しており、エンコード中に循環参照に問題があるのは事実ですが、エンティティ全体を返すことはめったになく、エンティティデータのサブセットを返すことがうまくいくことがわかります。C#を使用します。次に例を示します。
UserAccountService uaSvc = new UserAccountService();
UserAccount ua = uaSvc.GetByUserId(UserId)[0];
return Json(new { success = true, data = new { ua.UserName, ua.CustomerName, ua.Email } });
UserAccountServiceとUserAccountは、CodeSmith netTiersテンプレートを使用して生成されたサービスとエンティティであり、Json()return関数はMicrosoftのMVCの一部です。MVCを使用していない場合は、 Newtonsoftなどの別のエンコーダーに置き換えることができます。
これにより、次のようなJSONが返されます。Ext.jsはこれを簡単に消費できます:
{"success": true, data:{"UserName":"Knight", "CustomerName":"Knight Inc.", "Email":"knight@knightknight.com"}}
データのリストまたは配列を返すこともできます。以下では、Linqを使用して非常にコンパクトな方法でデータを取得します。
return Json(new UserAccountService().GetAll().Select(u=>new {u.UserID, u.UserName}));
これにより、次のようなデータが返されます。
[{"UserName":"Knight", "CustomerName":"Knight Inc.", "Email":"knight@knightknight.com"}, {"UserName":"George", "CustomerName":"George Inc.", "Email":"george@george.com"}]
ご覧のとおり、準拠JSONはnetTiersクエリ結果から簡単に作成できます。私はnetTiers以外のテンプレートを使用していませんが、同じような道をたどると思います。