質問: 開発環境 C#(VisualStudio2015) Asp.net Windows 10 Knockout.js SQLServer2014 を利用しています。 DBから取得したデータを以下のクラスを利用し、メモリ上に保持したいと思っています。 ``` using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.Serialization; namespace Cs.Common.Models { [DataContract] public class Person { [DataMember] internal string name; [DataMember] internal int age; } } ``` Web上でいろいろ調べてみると、 WCFという機能を利用し、response,requestでjavascript上でデータのやり取りを行っているようです。 View上は、Knockout.jsを利用して、バインドしたいと考えています。 どのようにして、javascriptのコードにデータを渡したら、よいのか全くわからないので教えてください。 また、もっといい方法があれば、教えていただきたいです。 漠然とした質問ですいません。 サイトでもよいのでお願いします。
回答: ### C#オブジェクトのJSON文字列化 ASP.NETでオブジェクトをJSONテキスト化する場合、.Net Framework 標準の DataContractJsonSerializer.aspx) というクラスが使えます。 ただし、よく使われるのは Json.NET というオープンソースライブラリのようです。こちらのほうが処理速度が速いと言われています。Json.NET の使い方等については、下記のサイトが解りやすいです。 参考サイト * C#でJSONを扱うライブラリ「Json.NET」を使ってみました * Serialize an Object(公式サンプル集) ### JSON文字列をブラウザ側のJavaScriptに渡す方法 WCF自体はASP.NETでJSONを取り扱う上で必須ではないですし、おそらく難解すぎて先に進めなくなると思いますので、とりあえず忘れましょう。 JSON化するデータオブジェクトがASP.NETでページを生成する時点で存在しているのであれば、ページ初期化のタイミングで上記の方法でJSONテキスト化して、それをページに埋め込むことになります。 そうではなく、データオブジェクトがページ上のユーザー操作(ボタンクリック等)によって生成される場合、AJAX の仕組みを実装する必要があるかもしれません。素のASP.NETなのか、ASP.NET MVCなのかにより実装の方法はいろいろあります。 ご参考になれば。