2016-10-09 29 views
0

在我的JS應用程序中,我將文檔上傳到服務器。 這些文件存儲在Uint8Array's中。這意味着文檔被表示爲由整數組成的Arrays縮短整數數組JSON表示

上傳文件之前I 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表示具有比原始整數數組大的文件大小。我想這是因爲Array被轉換爲JSON-String。我發送更多數據到服務器,然後需要。如何將數據存儲在JSON中更加壓縮?

我想,如果我先將數組先轉換爲Base64再轉換爲JSON,JSON表示可能更小。

你有什麼想法?感謝

+1

這聽起來像你實際上並不想要JSON。 – SLaks

+0

你有沒有試過BSON? – Bergi

+0

數組的內容是什麼?你會在大約相等的比例下在0-255範圍內有什麼價值,或者你會有更多類似ASCII的值嗎? Base64會給你比上述JSON數組表示更好的比例:一個字節將導致平均1.33字節,而數組表示將導致3.57字節。但如果你主要使用類似ASCII的數據,你可以下降到接近1個字節... – jcaron

回答

1

整數數組JSON表示結果平均3.57比輸入和輸出之間:

  • 10個值由2個字節(一個數位,一個逗號)
  • 90值由3個字節(表示2位數字,一個逗號)由4個字節

在另一方面

  • 156值,BASE64將導致平均1.333 ...比(3個字節被編碼爲4)。

    如果你的數組中大部分都是類似ASCII的字符(即在32-126的範圍內),那麼你最好將它們作爲字符串發送(有幾個字符被轉義),但如果你有隨機數8位數據。

    您可以使用某種base94表示法來獲得比base64更好的比率,但這真的值得嗎?

    另請注意,如果您還可能考慮壓縮數據。