较小的JSON格式
我将开发一个推送服务器(HTML5 WebSocket/Polling),为了减少数据包的大小(以JSON格式呈现),我想对数据包做如下处理:较小的JSON格式,json,serialization,deserialization,Json,Serialization,Deserialization,我将开发一个推送服务器(HTML5 WebSocket/Polling),为了减少数据包的大小(以JSON格式呈现),我想对数据包做如下处理: [["id", "username", "password"], [1, "afshin", "123"], [2, "barak", "meme"]] 而不是清晰的JSON格式,如: [{"id": 1, "username": "afshin", "password": "123"}, {"id": 2, "username": "barak",
[["id", "username", "password"], [1, "afshin", "123"], [2, "barak", "meme"]]
而不是清晰的JSON格式,如:
[{"id": 1, "username": "afshin", "password": "123"}, {"id": 2, "username": "barak", "password": "meme"}]
确切地说,我想阻止在每个对象中发送契约属性
所以,我想知道有没有这样做的图书馆(或类似的)?服务器上有C#,客户端上有JavaScript。删除名称-值对的名称将违反JSON语法规则。实际上,它不是JSON。您还可能导致JSON客户端反序列化出现问题。你能考虑减少你名字的长度吗?< /P>
[{"id": 1, "u": "afshin", "p": "123"}, {"id": 2, "u": "barak", "p": "meme"}]
此JSON文档的大小与您上面建议的相同。或者应该正是您想要的。您很可能需要自己实现序列化器/反序列化器(不过RJSON已经在JS中实现了)
至于压缩纯JSON,我认为您可以绕过“需要密钥”规则,将所有数据包装在一个对象条目中:
{"data" : [["id", "username", "password"], [1, "afshin", "123"], [2, "barak", "meme"]]}
因此,除了所有反对手动压缩的论点外,这将是一个解决方案:
var input = [{"id": 1, "username": "afshin", "password": "123"}, {"id": 2, "username": "barak", "password": "meme"}];
var keys = {}
input.map ( function (e) { Object.keys(e).map( function (k) { keys[k] = 1; })});
var output = [ Object.keys(keys) ] .concat( input.map( function (e) {
return Object.keys(keys).map( function (k) { return e[k]; } );
} ) );
console.log(output);
而Node.js产生:
[ [ 'id', 'username', 'password' ],
[ 1, 'afshin', '123' ],
[ 2, 'barak', 'meme' ] ]
我真的不知道这是否适用于所有浏览器等。为什么不直接使用CSV作为响应?类似于
1,afshin,123;巴拉克,模因代码>如果您关心的是最小化网络负载,请确保使用HTTP压缩。如果您使用的是apachehttpd,请查看mod_deflate。