我从一个看起来像这样的 MVC 操作返回一个 JSON 结构:
[HttpPost]
public ActionResult GetStudents(string name)
{
//
// Filter list of students...
//
return Json(new {
aaData = students.ToList().Select(s => new [] {
String.Format(@"<span style='display:none;'>{0}</span>{1}", s.Id, s.StudentNumber),
String.Format(@"<a href='../../Student/Details/{0}'>{1}</a>", s.Id, s.FullName),
String.Format(@"<a href='../../Student/Edit/{0}'>Edit</a>", s.Id)
})
}, JsonRequestBehavior.DenyGet);
}
生成的 JSON 如下所示:
{"aaData":
[
["\u003cspan style=\u0027display:none;\u0027\u003e3\u003c/span\u003e009165",
"\u003ca href=\u0027../../Student/Details/3\u0027\u003eJohn Smith\u003c/a\u003e",
"\u003ca href=\u0027../../Student/Edit/3\u0027\u003eEdit\u003c/a\u003e"],
... Lots more ...
]
}
哪个工作正常。但完整的 JSON 大约为 1.7 MB。我认为如果 JSON 中的 HTML 标记不是全部 unicode 编码的,这可以显着减少。根据JSON 规范,看起来不需要对这些进行编码:
any-Unicode-character- except-"-or-\-or- control-character
有什么方法可以阻止 .NET 以这种方式写出 JSON,或者有没有其他方法可以减少我需要传输的数据量?