该JSON格式本身不支持二进制数据.必须对二进制数据进行转义,以便可以将其放入JSON中的字符串元素(即使用反斜杠转义的双引号中的零个或多个Unicode字符).
转义二进制数据的一个明显方法是使用Base64.但是,Base64具有很高的处理开销.它还将3个字节扩展为4个字符,从而使数据量增加了大约33%.
一个用例是CDMI云存储API规范的v0.8草案.您可以使用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=",
}
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法和标准方法将二进制数据编码为JSON字符串?
我正在编写一个Web应用程序,需要通过AJAX将JSON数据存储在一个小的,固定大小的服务器端缓存中(想想:Opensocial配额).我无法控制服务器.
我需要减少存储数据的大小以保持服务器端配额,并且希望能够在将其发送到服务器之前在浏览器中对字符串化JSON进行gzip.
但是,我找不到Gzip的JavaScript实现方式.有关如何在发送之前压缩客户端数据的任何建议吗?
这是我的字符串
{
'user': {
'name': 'abc',
'fx': {
'message': {
'color': 'red'
},
'user': {
'color': 'blue'
}
}
},
'timestamp': '2013-10-04T08: 10: 41+0100',
'message': 'I'mABC..',
'nanotime': '19993363098581330'
}
Run Code Online (Sandbox Code Playgroud)
这里的消息包含单引号,与JSON中使用的引用相同.我所做的是填写用户输入的字符串,如消息.所以,我需要摆脱那些破坏代码的特殊场景.但除了字符串替换之外,是否有任何方法可以使它们转义但仍允许HTML将它们处理回正确的消息?
我必须形成一个JSON字符串,其中一个值具有换行符.这必须转义然后使用AJAX调用发布.任何人都可以建议使用JavaScript来逃避字符串.我没有使用jQuery.
我正在网站的客户端使用 javascript 代码来解析混合字符串/原始数据,这些数据通过 http POST 响应通过 JSON 对象接收。
该 JSON 对象的某些字段是文本/数字,但最大且最重要的字段(性能方面)是由原始数据(八位字节)组成的原始字段。
如何将该字段转换为Float64Array()对象,以便我可以使用纯现代 JavaScript 解析数据,并考虑到性能?
var file = $('#image').prop('files')[0];
var filename = $('#af_rpta_propertyland_filename').val();
var form_data = new FormData();
form_data.append('file', file);
alert(form_data);
$.ajax({
type: 'POST',
url: '../include/upload.php',
//dataType: "json",
data: {
file: form_data,
filename: filename
},
success: function(data) {
console.log(data);
for (var i = 0; i < data.length; i++) {
console.log("file " + i + ": " + data[i].file);
}
},
error: function(data) {
alert('No Record Found: ' + data);
}
});
Run Code Online (Sandbox Code Playgroud)
<input id="image" name="image" type="file" />
这是我如何在我的PHP代码中使用ajax上传我的pdf文件我这样做
$file = mysql_real_escape_string($_POST['file']);
$filename = mysql_real_escape_string($_POST['filename']);
if (isset($_FILES['file']) …Run Code Online (Sandbox Code Playgroud) javascript ×4
json ×3
ajax ×2
base64 ×1
compression ×1
escaping ×1
gzip ×1
jquery ×1
pdf ×1
php ×1
typed-arrays ×1