2

プッシュサーバー(HTML5 WebSocket / Polling)を開発し、パケットのサイズ(JSON形式で表示される)を減らすために、パケットで次のようなことを行います。

[["id", "username", "password"], [1, "afshin", "123"], [2, "barak", "meme"]]

次のような明確なJSON形式の代わりに:

[{"id": 1, "username": "afshin", "password": "123"}, {"id": 2, "username": "barak", "password": "meme"}]

正確には、各オブジェクトでコントラクトプロパティを送信しないようにします。

だから、これ(またはそのようなもの)を行うためのライブラリはありますか?サーバーにはC#、クライアントにはJavaScriptがあります。

4

3 に答える 3

1

したがって、手動圧縮に対するすべての議論に加えて、これは解決策になります。

var input = [{"id": 1, "username": "afshin", "password": "123"}, {"id": 2, "username": "barak", "password": "meme"}];


var keys = {}

input.map ( function (e) { Object.keys(e).map( function (k) { keys[k] = 1; })});

var output = [ Object.keys(keys) ] .concat( input.map( function (e) {
    return Object.keys(keys).map( function (k) { return e[k]; } );
} ) );

console.log(output);

そしてNode.jsは以下を生成します:

[ [ 'id', 'username', 'password' ],
  [ 1, 'afshin', '123' ],
  [ 2, 'barak', 'meme' ] ]

これがすべてのブラウザなどで機能するかどうかは本当にわかりません。

于 2012-10-13T14:41:40.987 に答える
1

JSON DBまたはRJSONは、まさにあなたが探しているものでなければなりません。ほとんどの場合、シリアライザー/デシリアライザーを自分で実装する必要があります(ただし、RJSONはすでにJSに実装されています)。

純粋なJSONの圧縮に関しては、すべてのデータを1つのオブジェクトエントリにラップすることで、「キーが必要」というルールを回避できると思います。

{"data" : [["id", "username", "password"], [1, "afshin", "123"], [2, "barak", "meme"]]}
于 2012-10-13T14:02:46.197 に答える
0

名前と値のペアの名前を削除すると、JSON構文ルールに違反することになります。事実上、JSONではありません。また、JSONクライアントの逆シリアル化で問題が発生する可能性があります。名前の長さを短くすることを検討してください。

[{"id": 1, "u": "afshin", "p": "123"}, {"id": 2, "u": "barak", "p": "meme"}]

このJSONドキュメントは、上記で提案したものと同じサイズです。

于 2012-10-13T13:24:10.413 に答える