2014-08-31 188 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