Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
较小的JSON格式_Json_Serialization_Deserialization - Fatal编程技术网

较小的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",

我将开发一个推送服务器(HTML5 WebSocket/Polling),为了减少数据包的大小(以JSON格式呈现),我想对数据包做如下处理:

[["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。