减少ASP.NET MVC中JsonResult消息的字节数

使用
JsonResult
编码的动作结果在序列化中似乎过于冗长。例如:
{"foo":"bar","list":["a","b"],"map":{"a":1,"b":2,"c":3}}
JavaScript似乎非常满意这个更短的版本作为等价物:
{foo:"bar",list:["a","b"],map:{a:1,b:2,c:3}}
所以这个问题有两个方面: 假设我的所有标签都是有效的JavaScript标识符,是否有理由说前者更好? 我可以使用这种较短的语法强制ASP.NET MVC框架对我的消息进行编码吗? 我正在编写一个非常重的AJAX应用程序并计算出我可以节省15%到20%的邮件大小。在许多情况下,将响应安装在单个TCP数据包中是不同的。即使无视绩效,我每月带宽费用的减少也是一个福音。 编辑 正如Justin指出的那样,根据JSON标准需要引用,但我不需要它们在浏览器中使用纯JavaScript。我是否可以强制.NET Web框架以某种方式删除引号,这比编写自己的JSON序列化器更简单?     
已邀请:
还有另一个线程在谈论引用: 属性名称的JSON语法 基本要点是不使用引号有资格作为有效的javascript,但不是有效的JSON。 至于修改你的JSON以不包括属性的引用 - 我不太确定这是一个好主意。如果您选择打开外部API的JSON调用,谁知道无效格式可能出错。 但是如果你想继续这里,我认为最好的办法是下载和修改JSON.NET开源库: http://json.codeplex.com/ 在他们的文档中,有一篇关于减少JSON足迹大小的特定文章,尽管他们没有提到删除引号: http://james.newtonking.com/projects/json/help/ReducingSerializedJSONSize.html 下载此代码并修改JSONTextWriter类后,您可以在MVC中创建一个自定义ActionResult,它使用此序列化程序而不是JsonResult类中默认使用的System.Web.Script.Serialization.JavaScriptSerializer类。在MVC Contrib项目中使用其他数据类型执行此操作有一些很好的示例: http://mvccontrib.codeplex.com/ 希望这可以帮助。     
在视频“JavaScript - The Good Parts”中的-30:20,道格拉斯·克罗克福德指出,客户端和服务器之间首次发送的JSON消息失败,因为他们使用的一个字段名称是“do”,这是一个保留JavaScript中的单词。他解释说,它不一定是这种方式(解释器可以根据上下文区分),但它是通过匆忙开发的语言进入标准的许多怪癖中的一个。 因此,字段名称周围需要引号。当然,应该可以保留一个保留条款列表,并且只包含引号中的条款。     

要回复问题请先登录注册