O formato JSON nativamente não suporta dados binários. Os dados binários precisam ser escapados para que possam ser colocados em um elemento de sequência (ou seja, zero ou mais caracteres Unicode entre aspas duplas usando escapes de barra invertida) no JSON.
Um método óbvio para escapar de dados binários é usar o Base64. No entanto, o Base64 possui uma alta sobrecarga de processamento. Também expande 3 bytes em 4 caracteres, o que aumenta o tamanho dos dados em cerca de 33%.
Um caso de uso para isso é o rascunho v0.8 da especificação da API de armazenamento em nuvem CDMI . Você cria objetos de dados por meio de um serviço da Web REST usando JSON, por exemplo
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=",
}
Existem maneiras melhores e métodos padrão para codificar dados binários em strings JSON?
JSON.parse
etc ......