質問: WCFのネイティブDataContractJsonSerializerまたはASP.NETのネイティブJavaScriptシリアライザを使用しても、Entity FrameworkオブジェクトをJSONにシリアル化することはできないようです。これは、両方のシリアライザが拒否する参照カウントの問題によるものです。私はJson.NETも試してみました 。これもまた参照カウント問題では特に失敗します。 --- **編集:** Json.NETはEntity Frameworkエンティティをシリアライズおよびデシリアライズできるようになりました 。 --- 私のオブジェクトは、追加のビジネス機能(認証など)を実行するためにオーバーロードされているEntity Frameworkオブジェクトです。プラットフォームに依存しないAPIを提示したいので、プラットフォーム固有の属性などでこれらのクラスを装飾したくありません。 。 私は実際に私がhttps://blog.programx.co.uk/2009/03/18/wcf-json-serialization-woes-and-a-solution/で行った個々のステップについてブログを書いています。 明白なことを逃したことがありますか?
回答: これを行う方法は、シリアライズしたいデータを無名型に射影し、それをシリアライズすることです。これにより、実際にJSONに必要な情報だけが確実にシリアル化されます。オブジェクトグラフの下にあるものを誤ってシリアル化することはありません。それはこのように見えます: ``` var records = from entity in context.Entities select new { Prop1 = entity.Prop1, Prop2 = entity.Prop2, ChildProp = entity.Child.Prop } return Json(records); ``` 匿名型は、これにはほぼ理想的です。 JSONは、明らかに、どの型がそれを生成するために使用されたかを気にしません。匿名型を使用すると、JSONにどのようなプロパティと構造を追加するかに関して、完全な柔軟性が得られます。