(.json ファイルを作成するのではなく) クラスの N 個のオブジェクトをインスタンス化する .cshtml ファイルでサイトが使用するデータを作成する方が簡単です。以前に生のjsonファイルを作成した後、最近この方法に変更しました。
.json であれ .cshtml であれ、データを読み取るコードは同じです。
$.getJSON('Content/noba.json', function (data) {
$.each(data, function (i, dataPoint) {
. . .
$.getJSON('getHugos.cshtml', function (data) {
$.each(data, function (i, dataPoint) {
. . .
おそらく、生の json を次のように読み取ります。
. . .
{
"category":"Outdoor Literature",
"title":"Almost Somewhere: Twenty-Eight Days on the John Muir Trail",
"author":"Suzanne Roberts",
"kindle":"B008SAOT4C",
"hardbound":"--",
"paperback":"0803240120",
"imghref":"http://www.amazon.com/exec/obidos/ASIN/B008SAOT4C/garrphotgall-20\" target=\"_blank\" ><img height=\"180\" width=\"120\" src=\"http://images.amazon.com/images/P/B008SAOT4C.01.MZZZZZZZ.jpg\" alt=\"Suzanne Roberts Book Cover\" /></a>"
},
. . .
...次のようなものよりもパフォーマンスが向上します。
@{
var books = new List<BookClass>
{
new BookClass{Year=2013, YearDisplay="blankYearDisplay", Category="2013", Title="blankTitle", Author="blankAuthor", KindleASIN="blankKindleASIN", HardboundASIN="blankHardboundASIN", PaperbackASIN="blankPaperbackASIN", ImgSrc="blankImgSrc"},
. . .
new BookClass{Year=2001, YearDisplay="2001", Category="Best Novella", Title="The Ultimate Earth", Author="Jack Williamson", KindleASIN="B00DV8TSHO", HardboundASIN="--", PaperbackASIN="1612421547", ImgSrc="http://images.amazon.com/images/P/B00DV8TSHO.01.MZZZZZZZ"}
};
Response.ContentType = "application/json";
Json.Write(books, Response.Output);
}
...これは、ASP.NET を介して次のように変換する追加の手順を実行する必要があります。
[...,{"Year":2013,"YearDisplay":"2013","Category":"Best Novel","Title":"Redshirts","Author":"John Scalzi","KindleASIN":"B0079XPUOW","HardboundASIN":"0765316994","PaperbackASIN":"0765334798","ImgSrc":"http://images.amazon.com/images/P/B0079XPUOW.01.MZZZZZZZ"},...]
...しかし、誰もが知っているように、物事を推測することは時々私たちをトラブルに巻き込みます。
私はあなたが何を考えているか知っています - ただそれをテストして調べてください; しかし、2 つのアプローチを比較できるほど十分な cshtml レコードをまだ作成していませんが、C# クラスを json データに変換するよりも生の json ファイルをロードする速度が著しく速いかどうかを知っている人はいますか? もしそうなら、私は以前の方法論に戻らなければならないかもしれません...
アップデート
自分で確認できます (www.awardwinnersonly.com) が、私の観察によると、ほぼ同じサイズの 2 つのリスト (書籍 > National Outdoors Book Awards および Books > Hugos (Science Fiction)、生の json ファイルにアクセスする最初のリスト、およびもう 1 つの C#/Razor クラスは json に変換され、同じ速度で読み込まれます (ストップウォッチなどは使用しませんでしたが、どちらが速いかという一般的な感覚を探しています)。 )、バックエンド アセンブリ ラインの作業を行うのではなく、htm ファイルを読み込み、それについて確認します。
どちらかといえば、cshtml ファイルは NOBA json ファイルよりも高速です。これは、項目数がはるかに少ない Music > CMA json ファイルよりもさらに高速です。Razor エンジンがそのような操作などのために超最適化されていない限り、なぜそうなるのかはわかりません。
更新 2
今まで考えたこともありませんでしたが、これは json ファイルに直接アクセスするよりも、json 化された C# クラスを使用する利点です。 $.getJSON('getHugos.cshtml') によって呼び出されたときにステップスルーします