我对 JSON 比较陌生。我最近将 JQuery 和 JavaScript 添加到应用程序中,以使其更具交互性和更快。我了解 JSON 如何适用于基本类型,例如:字符串、数字等,其中有 MAP,即键和值。例如:http://www.w3schools.com/json/ 。这里有一个员工列表,其中每个员工都有两个键,即名字和姓氏,以及两个值,即名字值和姓氏值。
但是,我不明白二进制数据如何适合该方程。假设我要向 Employee 对象添加一个名为:Video 的新属性,其类型为:application/octet-stream
,如问题中所示:Binary Data in JSON String. Something better than Base64其值为:
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
这些数据如何表示为 MAP?我意识到这可能是一个简单的问题,但是我确实有一本 JSON 书,但它没有详细介绍。我在网上也没有找到答案。
最佳答案
我认为你给予“ map ”(KV 对)太多的值(value)。正如您所指出的,JSON 有少量类型:数字、字符串、true
和 false
、null
、数组和对象。您可以将对象和“ map ”视为同一事物。对象可以由其他类型构建,例如:
{
"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
关于javascript - JSON 和二进制数据 - 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25591407/