Il formato JSON non supporta nativamente i dati binari. I dati binari devono essere sottoposti a escape in modo che possano essere inseriti in un elemento stringa (ovvero zero o più caratteri Unicode tra virgolette doppie utilizzando gli escape di barra rovesciata) in JSON.
Un metodo ovvio per sfuggire ai dati binari è usare Base64. Tuttavia, Base64 ha un elevato sovraccarico di elaborazione. Inoltre, espande 3 byte in 4 caratteri, il che comporta un aumento delle dimensioni dei dati di circa il 33%.
Un caso d'uso per questo è la bozza v0.8 della specifica API di archiviazione cloud CDMI . È possibile creare oggetti dati tramite un servizio Web REST utilizzando JSON, ad es
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=",
}
Esistono modi migliori e metodi standard per codificare i dati binari nelle stringhe JSON?
JSON.parse
.