我对JSON比较陌生。我最近在应用程序中添加了JQuery和JavaScript,以使其更具交互性和更快速。我理解JSON如何适用于基本类型,如:字符串,数字等,其中有MAP,即键和值。例如:http://www.w3schools.com/json/。这里有一个Employees列表,每个员工有两个键,即名字和姓氏,以及两个值,即名字值和姓氏值。
但是,我不明白二进制数据如何适合等式。假设我要向Employee对象添加一个名为:Video的新属性,它是一个类型:application/octet-stream
,如问题所示:Binary Data in JSON String. Something better than Base64,值为:
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
这些数据如何表示为MAP?我意识到这可能是一个简单的问题,但我确实有一本JSON书,但它并没有详细介绍。我也没有在网上找到答案。
答案 0 :(得分:0)
我认为你给的“地图”(KV对)价值太高了。正如您所指出的,JSON有少量类型:数字,字符串,true
和false
,null
,数组和对象。您可以将对象和“贴图”视为同一个东西。对象可以由其他类型构建,例如:
{
"person": {
"name": "John"
}
}
Person是一个具有name属性的对象。
因此,如果要在JSON中表示二进制数据,则必须使用现有类型之一(通常通过Base64作为字符串)。在linked question中给出的示例中,对象的value
属性是文件的Base64编码值。
{
"mimetype" : "application/octet-stream”,
"metadata" : [ ],
"value" : "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=",
}
如果您熟悉JavaScript,以下内容将为您提供Base64编码的值作为字符串:
var obj = JSON.parse(json);
var value = obj.value; // This is a string