JSON字符串中的二进制数据。 比Base64更好的东西

眉间皱痕 提交于 2020-07-27 22:42:38

问题:

The JSON format natively doesn't support binary data. JSON格式本身不支持二进制数据。 The binary data has to be escaped so that it can be placed into a string element (ie zero or more Unicode chars in double quotes using backslash escapes) in JSON. 必须对二进制数据进行转义,以便可以将其放入JSON中的字符串元素(即使用反斜杠转义的双引号中的零个或多个Unicode字符)。

An obvious method to escape binary data is to use Base64. 逃脱二进制数据的一种明显方法是使用Base64。 However, Base64 has a high processing overhead. 但是,Base64具有较高的处理开销。 Also it expands 3 bytes into 4 characters which leads to an increased data size by around 33%. 它还将3个字节扩展为4个字符,这导致数据大小增加了约33%。

One use case for this is the v0.8 draft of the CDMI cloud storage API specification . 一个用例是CDMI云存储API规范的v0.8草案。 You create data objects via a REST-Webservice using JSON, eg 您可以使用JSON通过REST-Webservice创建数据对象,例如

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=",
}

Are there better ways and standard methods to encode binary data into JSON strings? 是否有更好的方法和标准方法将二进制数据编码为JSON字符串?


解决方案:

参考一: https://stackoom.com/question/63Qk/JSON字符串中的二进制数据-比Base-更好的东西
参考二: https://oldbug.net/q/63Qk/Binary-Data-in-JSON-String-Something-better-than-Base64
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!