Le format JSON ne prend pas nativement en charge les données binaires. Les données binaires doivent être échappées afin de pouvoir être placées dans un élément de chaîne (c'est-à-dire zéro ou plusieurs caractères Unicode entre guillemets en utilisant des échappements antislash) dans JSON.
Une méthode évidente pour échapper aux données binaires est d'utiliser Base64. Cependant, Base64 a une surcharge de traitement élevée. Il étend également 3 octets en 4 caractères, ce qui entraîne une augmentation de la taille des données d'environ 33%.
Un cas d'utilisation pour cela est le brouillon v0.8 de la spécification de l'API de stockage cloud CDMI . Vous créez des objets de données via un REST-Webservice en utilisant JSON, par exemple
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=",
}
Existe-t-il de meilleures méthodes et méthodes standard pour coder les données binaires en chaînes JSON?
JSON.parse
etc ......