0

私はプロトスタッフを使用て、私が持っているjson入力をバイト配列に変換しました。Java のコードは次のとおりです。

LinkedBuffer buffer = LinkedBuffer.allocate(1024);
Schema<String> orderSchema = RuntimeSchema.getSchema(String.class);
int i = 1 ;
for(String p:poligonsStr) {               
    buffer.clear();
    byteslist.add(ProtostuffIOUtil.toByteArray(p, orderSchema, buffer));
}

問題は、使用されているアルゴリズムと、JavaScript クライアント (Node.js) でデコードする方法がわからないことです。また、プロジェクト com.dyuproject.protostuff のプロトスタッフ用に実装された Smile という非常に優れたアルゴリズムがあることも確認しましたが、そのライブラリでスキーマを取得する方法を知りたいのですが、まだ管理していません。

使用するのに最適なものを知りたい:ProtostuffIOUtilまたはSmileIOUtil? そして使い方は?また、JavaScript でデコードする方法は?

4

1 に答える 1

0

protostuff のバイナリ エンコーディングはprotobufとは異なります。私の知る限り、現時点で protostuff でエンコードされたデータをデコードする JavaScript ライブラリはありません。

smileはそのままでは Web ブラウザでサポートされていませんが、それをデコードできるライブラリがあります。

私にとっては、サーバー上で Protostuff ライブラリを使用してデータをエンコードし、クライアント側で JavaScript を使用してデコードする最適な方法が 2 つあります。

  1. エンコードされたデータのサイズが重要な場合は、protobufエンコーディングを使用してください。サーバー側ではProtobufIOUtil、データを protobuf バイナリ形式にシリアル化するために使用する必要があります。クライアント側では、https://github.com/dcodeIO/ProtoBuf.js/を使用して、サーバーからのバイナリ データをデコードできます。
  2. JSONエンコーディングを使用します。これは JavaScript のネイティブ形式であり、通常、protobuf でエンコードされたバイナリ データよりも高速に解析されます。サーバー側では、JsonIOUtil(protostuff-json モジュールから) を使用して、データを JSON テキスト形式にシリアル化する必要があります。クライアント側では、すぐに使用できます。

Protostuffを使用して POJO を protobuf バイナリにシリアル化する方法の例を次に示します。

于 2016-06-22T20:26:22.913 に答える