このコード サンプルは、 http : //james.newtonking.com/projects/json/help/ の「Json のシリアライズとデシリアライズ | コレクションのシリアライズ」にあります。
Product p1 = new Product
{
Name = "Product 1",
Price = 99.95m,
ExpiryDate = new DateTime(2000, 12, 29, 0, 0, 0, DateTimeKind.Utc),
};
Product p2 = new Product
{
Name = "Product 2",
Price = 12.50m,
ExpiryDate = new DateTime(2009, 7, 31, 0, 0, 0, DateTimeKind.Utc),
};
List<Product> products = new List<Product>();
products.Add(p1);
products.Add(p2);
string json = JsonConvert.SerializeObject(products, Formatting.Indented);
//[
// {
// "Name": "Product 1",
// "ExpiryDate": "2000-12-29T00:00Z",
// "Price": 99.95,
// "Sizes": null
// },
// {
// "Name": "Product 2",
// "ExpiryDate": "2009-07-31T00:00Z",
// "Price": 12.50,
// "Sizes": null
// }
//]
ここまでは順調ですね; しかし、この出力はどのように jQuery から取得されるのでしょうか? JsonizedProducts.cshtml という名前のファイルを持つことは可能でしょうか:
@{
return GetProductsAsJson(); // returns the string named "json" above
}
...そして(疑似コード)のようなjQueryを使用します:
$.getJson('\JsonizedProducts') {
// loop through the json, building html with injected product values
}
? または...?
アップデート
これを行うために必要なクライアント側の jQuery コードの例をたくさん見つけました。私が見逃しているのはサーバー側の側面です。.getJSON("\Bla\Blee.js", someVal, someFunc) のようなもので .getJson(path, data, callback) を呼び出す場合、Blee.js はどのように JSON データを返しますか? diesbzg と呼ばれるファイルの責任は何ですか?
更新 2
これは私ができる方法ですか (getPlatypus() と getWombat() は List<> を返す他のクラスのメソッドです):
// This code is in the file that .getJson() calls; the data (args) .getJson calls has "mammalRequested" Using the Web.Helpers Json helper
string jsonResult;
if (mammalRequested == "Platypus") {
jsonResult = Json.Encode(getPlatypus);
}
else if (mammalRequested == "Wombat") {
jsonResult = Json.Encode(getWombat);
}
Response.Write(jsonResult);
?
更新 3
Json.NET について言及しているので、これは私の質問に対する回答ではありませんが、おそらく最善の解決策です。C# から JSON 化されたデータを返す方法があることは知っています (Brind の本では、168 ~ 170 ページにその方法が示されています)。おそらく最も賢明な方法は (混乱を最小限に抑える)、単純に json データを含む .js ファイルを次のように呼び出すことです。
$.getJson('someFile.js', 'someArg', someCallbackFunction);
そして、(私にとって) Json ファイルを作成する最も簡単な方法は? 最初に、 http://www.convertcsv.com/csv-to-json.htmなどの CSV2Json コンバーターを使用して csv ファイルを作成します。
次に、もちろん、.each(data) を使用して json レコードをループし、「持っています」。