在我的JS应用程序中,我将文档上传到服务器。
文档存储在Uint8Array
中。这意味着文档表示为由整数组成的Arrays
。
在上传文件之前JSON.stringify
文件。
这里有一个例子:
var document = [0,5,5,7,2,234,1,4,2,4]
JSON.stringify(document)
=> "[0,5,5,7,2,234,1,4,2,4]"
然后我将JSON表示发送到服务器。
我的问题是JSON表示的文件大小比原始的Integer-Array大得多。我猜是因为Array
已转换为JSON-String
。然后我需要向服务器发送更多数据。如何以JSON格式存储更多压缩的数据?
我想,如果我首先将Array转换为Base64然后再转换为JSON,那么JSON表示可能会更小。
你有什么想法?谢谢
答案 0 :(得分:1)
整数数组JSON表示导致输入和输出之间的平均比率为3.57:
另一方面,base64将导致平均1.333 ...比率(3个字节编码为4)。
如果你的数组中大部分都是类似ASCII的字符(即在32-126范围内),你可能最好只将它们作为字符串发送(带有几个字符转义),但如果你有随机字符则不行8位数据。
你可以使用某种base94表示来获得比base64更好的比例,但它真的值得花费吗?
另请注意,如果您也可以考虑压缩数据。