【发布时间】:2011-05-06 23:38:53
【问题描述】:
使用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 数据包中会有所不同。即使不考虑性能,减少我每月的带宽费用也是一个福音。
编辑
正如贾斯汀指出的那样,根据 JSON 标准,引号是必需的,但我不需要它们在浏览器中用于纯 JavaScript 使用。我可以强制 .NET Web 框架以比编写自己的 JSON 序列化程序更简单的方式删除引号吗?
【问题讨论】:
-
在向ASMX和WCF服务发布数据时,引号是必须的,不能用单引号代替,否则会看到服务抛出异常。不过,我找不到任何 JSON 标准说引号是必要的,至少对于 Javascript 来说不是。
-
您的计算是否考虑了 http 流的压缩?我不确定你是否真的会节省 15-20%,但这只是一种预感。
-
@Ryan。好点,但是如果我的消息很小(1.5kB),那么压缩实际上可能会增加它们的大小。不过,我一定会考虑将其作为一种选择,干杯。
标签: .net asp.net-mvc json serialization jsonresult