Javascript JSON的二进制编码?

Javascript JSON的二进制编码?,javascript,json,encoding,binaryfiles,Javascript,Json,Encoding,Binaryfiles,我的Javascript应用程序正在从服务器下载大量数据,我想除了服务器完成的正常gzip之外,我还可以用一些二进制格式而不是文本JSON对数据进行编码。 有没有标准的方法可以做到这一点? 理想情况下,它应该是一些小型工具,可以获取JSON文本文件并将其转换为通用二进制格式,以及一个小型Javascript库对其进行解码 另外,在XHR中是否需要执行一些特殊操作来传递二进制数据?请检查 BSON,是binary的缩写 JSON是一种二进制编码 类JSON的系列化 文件。与JSON一样,BSON支

我的Javascript应用程序正在从服务器下载大量数据,我想除了服务器完成的正常gzip之外,我还可以用一些二进制格式而不是文本JSON对数据进行编码。
有没有标准的方法可以做到这一点?
理想情况下,它应该是一些小型工具,可以获取JSON文本文件并将其转换为通用二进制格式,以及一个小型Javascript库对其进行解码

另外,在XHR中是否需要执行一些特殊操作来传递二进制数据?

请检查

BSON,是binary的缩写 JSON是一种二进制编码 类JSON的系列化 文件。与JSON一样,BSON支持 文件和文件的归档 带其他文件的射线和 射线。BSON还包括 所有这些都很低 表示以下数据类型: 不是的JSON规范的一部分 例如,BSON有一个日期类型和一个 BinData类型

在这里可以找到一个很好的解释

正在使用类似的东西进行面向文档的存储。您可以直接在上获取更多详细信息。
不幸的是,BSON不使用Javascript(正如您从中看到的),因此我认为这不是对您的问题的好答案

你可以考虑使用;它有一个很好的特性,但仍然是实验性的。
您可以尝试一下——很多时候,实验性的开源项目已经足够适合在特定场景中使用了


还要注意的是,BSON比JSON更紧凑;对于protbuf这样的其他协议也是如此——我强烈建议您做一些计算,看看是否有实际的收益。

如果gzip压缩不够好,那么您的二进制格式也很可能不会,特别是如果您无法在合理的时间内通过javascript对其进行解码

请记住,使用gzip时的解压是由浏览器本机完成的,比javascript中的任何操作都要快几个数量级

如果您觉得JSON反序列化太慢,因为您支持像IE7这样的旧浏览器,它不原生解码JSON,而是依赖于<代码> EVA>代码>作业,请考虑从JSON转到基于字符串拆分的自定义编码,这要比反序列化快得多。 要获得灵感,请阅读本文:


请注意:BSON没有JS实现。我认为有一个实现,请查看此示例:您是对的:-)但是,正如文章中所述,该实现没有很好地工作(消息大小相当大),我不知道它是否对实际应用程序有用。查看BSON的规范,我认为BSON编码的文档不会比JSON编码的文档小很多。例如,JSON对象中的键名只比BSON对象中的键名长一个字节。小于1000的数字实际上比JSON中的完整UTF-8字符串占用更多的空间,尽管您可以在BSON中使用C字符串格式来存储UTF-8(BSON规范中关于char 0的注释是错误的)。这个答案混淆了BSON和BISON。第一个链接用于MongoDB使用的标准BSON,而第二个链接(使用JavaScript实现)用于宠物项目BISON。(公平地说,BISON的创建者错误地将其称为BSON…)如果服务器正在压缩数据,首先将其转换为二进制可能不会有多大帮助。您会发现二进制压缩版本的大小与文本压缩版本的大小相似。