缩短整数数组JSON表示

时间:2016-10-09 16:48:06

标签: javascript jquery arrays json

在我的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表示可能会更小。

你有什么想法?谢谢

1 个答案:

答案 0 :(得分:1)

整数数组JSON表示导致输入和输出之间的平均比率为3.57:

  • 10个值由2个字节(一个数字,一个逗号)
  • 表示
  • 90个值乘以3个字节(2位数,一个逗号)
  • 156个值乘以4个字节

另一方面,base64将导致平均1.333 ...比率(3个字节编码为4)。

如果你的数组中大部分都是类似ASCII的字符(即在32-126范围内),你可能最好只将它们作为字符串发送(带有几个字符转义),但如果你有随机字符则不行8位数据。

你可以使用某种base94表示来获得比base64更好的比例,但它真的值得花费吗?

另请注意,如果您也可以考虑压缩数据。