JSON形式は、ネイティブバイナリデータをサポートしていません。バイナリデータは、JSONの文字列要素(バックスラッシュエスケープを使用して二重引用符で囲まれた0個以上のUnicode文字)に配置できるようにエスケープする必要があります。
バイナリデータをエスケープする明白な方法は、Base64を使用することです。ただし、Base64には高い処理オーバーヘッドがあります。また、3バイトを4文字に拡張するため、データサイズが約33%増加します。
この使用例の1つは、CDMIクラウドストレージAPI仕様のv0.8ドラフトです。JSONを使用してREST Webサービスを介してデータオブジェクトを作成します。
PUT /MyContainer/BinaryObject HTTP/1.1
Host: cloud.example.com
Accept: application/vnd.org.snia.cdmi.dataobject+json
Content-Type: application/vnd.org.snia.cdmi.dataobject+json
X-CDMI-Specification-Version: 1.0
{
"mimetype" : "application/octet-stream",
"metadata" : [ ],
"value" : "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=",
}
バイナリデータをJSON文字列にエンコードするより良い方法と標準的な方法はありますか?
JSON.parse
など、アプリケーションの多くの部分でボトルネックになる可能性があります。……