2016-10-09 8 views
0

私のJSアプリケーションでは、ドキュメントをサーバーにアップロードしています。 文書はUint8Arrayに保存されています。つまり、文書は整数で構成される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表現が元のInteger-Arrayよりもはるかに大きなファイルサイズを持っていることです。私は、ArrayJSON-Stringに変換されているからだと思います。私はサーバーにもっと多くのデータを送り、それから必要なものです。 JSONでより圧縮されたデータを保存するにはどうすればよいですか?

Arrayを最初にBase64に変換してからJSONに変換すると、JSON表現がもっと小さくなると思っていました。

あなたのアイデアは何ですか?おかげ

+1

JSONが実際には欲しくないようです。 – SLaks

+0

BSONを試しましたか? – Bergi

+0

配列の内容は何ですか? 0-255の範囲内の任意の値をほぼ同じ比率で使用しますか、それともよりASCIIのような値を使用しますか? Base64は、上記のJSON配列表現よりも優れた比率を与えます:1バイトは平均1.33バイトになりますが、配列表現は3.57バイトになります。しかし、ASCIIのようなデータがほとんどであれば、1バイトに近づくことができます。 – jcaron

答えて

1

整数配列JSON入力と出力との間の平均3.57の比率で表現結果:

    10の値は3バイト(によって2バイト(一桁一のコンマ)
  • 90値によって表される
  • 4バイト一方

により2桁一のコンマ)

  • 156の値は、BASE64は平均1.333 ...比(3つのバイトは4としてエンコードされる)をもたらすであろう。

    ASCII文字のような文字が配列(つまり32-126の範囲)にある場合は、文字列(いくつかの文字がエスケープされている)として送信する方がよいでしょうが、 8ビットデータ。

    base64表現よりも優れた比率を得るために、何らかの種類のbase94表現を使用できますが、それは本当に価値がありますか?

    また、データの圧縮を検討する場合もあります。