我在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# 传回 jsonized 数据(Brind 的书在第 168-170 页显示了如何),但是可能最明智的(最少的麻烦和大惊小怪)是简单地调用一个包含 json 数据的 .js 文件,如下所示:
$.getJson('someFile.js', 'someArg', someCallbackFunction);
(对我来说)创建 Json 文件的最简单方法是什么?首先,创建一个 csv 文件,而不是使用 CSV2Json 转换器,例如来自http://www.convertcsv.com/csv-to-json.htm。
然后,当然,使用 .each(data) 循环遍历 json 记录并“拥有它们”。