2014-08-31 195 views
1

我对JSON比较新。我最近在应用程序中添加了JQuery和JavaScript,使它更加互动和更快捷。我了解JSON如何用于基本类型,如:字符串,数字等,其中有一个MAP,即一个键和一个值。例如:http://www.w3schools.com/json/。这里有一个员工列表,其中每个员工有两个键,即名和姓以及两个值,即名和值。JSON和二进制数据 - 编码

但是,我不明白二进制数据如何适合等式。说我是一个新的属性添加到称为Employee对象:在这个问题application/octet-stream像:视频,这是一种Binary Data in JSON String. Something better than Base64和值:

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz 
    IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg 
    dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu 
    dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo 
    ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4= 

这是如何的数据表示为地图吗?我意识到这可能是一个简单的问题,但是我有一本JSON书,但没有详细说明。我还没有在网上找到答案。

+0

这个数据应该在字符串中去,而不是在一个地图。不过,我认为用JSON编码视频并不是一个好主意,而只是在JSON中放置一个链接并单独加载它。 – Bergi 2014-08-31 11:29:03

+0

@Bergi,你是说你可以把任何你想要的东西放到一个JSON字符串中,也就是说它不一定是格式:{“data”:{“field1”:“value1”,“field2”:“value2 “}} – w0051977 2014-08-31 11:33:21

+1

@ w0051977他是什么意思,你把它作为json属性的字符串值。像'{“视频”:“TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmF​​uY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4 =”}' – soulcheck 2014-08-31 11:34:35

回答

0

我想你给“地图”(KV对)太多的价值。正如您已经指出的那样,JSON有少量类型:数字,字符串,truefalse,null,数组和对象。你可以把对象和“地图”看成是同一件事。对象可以建立其他类型,例如:

{ 
    "person": { 
     "name": "John" 
    } 
} 

人是具有名称属性,是一个字符串对象。因此,如果你想用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 
+0

谢谢,但上面的例子中的关键是什么?我明白这个值是二进制数据。 – w0051977 2014-08-31 15:30:08

+0

关键是'value',它的值是一个字符串,而不是二进制。 – Whymarrh 2014-08-31 17:16:07