2017-04-03 5 views
2

JSONを使用してクライアントと通信するやや大きなJavaベースのサーバー側コードベースを継承しました。いくつかの理由から、 ジャクソンベースのJSON変換ではバイナリ形式を使用する必要があります。つまり、サーバー側で生成しているJSONは、文字ではなくバイトで構成されています。JSONバイトをJavascriptで変換する方法

これは以前のクライアントでは問題ありませんでした。これはすべてJavaベースであったためです。 Jacksonのライブラリを使ってバイナリをオブジェクトに戻すことができました。残念ながら、私はJSON情報を受け取って表示するためにJavascriptを使用する必要のあるブラウザベースのクライアントをいくつか作成するよう求められています。

JQueryのJSON変換関数を使用しようとしていますが、JQueryと通常のJavascript関数のどちらもJSONバイトのセットをオブジェクトに戻すことはできません。私はそれらをオブジェクトに戻すために、バイトを文字に変換する必要があります。

バイトを文字に変換するために、バイトをバイト配列に取得する必要があることを知りました。これは私が問題を抱えているところです。

バイナリのJSON情報を、JSON変換関数を使用して意味のあるオブジェクトに変換できる形式(バイト配列)に変換するために、さまざまな方法を使用しようとしています。私はバイト配列を作成するために、バイトのバッファにデータを変換するために、次にint8Array()関数をArrayBufferを用いて試みた:

var buffer = new ArrayBuffer(obj.payload.length); 
var bits = new Int8Array(buffer); 

Iもuint8Array()を使用しようとし、見つかった様々な他の変換ルーチンを試し意味のある文字に変換できる配列を作成するために、インターネット上で(そしてここではStack Overflowで)私のすべての試みは、実行時にエラーや失敗の原因になったり、JSONコンバータを壊すようなゴミを生成したりしています。

JSONコンバータを使用してオブジェクトに変換できるように、JavascriptでJacksonによって生成されたバイトセットを読み取る方法はありますか?または、JavascriptはJSON文字列を変換できるだけですか?

誰か...

+1

?あなたが話すJSONバイト*のサンプルです。JSONをまったく扱っていない可能性は排除できます –

答えて

3

を助言してください、あなたのバイナリJSONはこのようなものであると想定します。あなたは簡単にそれを文字列に変換することができ

[123, 34, 107, 101, 121, 34, 58, 34, 118, 97, 108, 117, 101, 34, 125]

var str = String.fromCharCode.apply(String, data);

JSONオブジェクトを解析して解析します。

あなたはそれが役立つだろう知っ

JSON.parse(str);

jsfiddle

関連する問題