2010-03-02 62 views
20

我正在學習JSON,但我發現你可以把所謂的「哈希」放入JSON中?我在哪裏可以找出散列是什麼?或者你能向我解釋什麼是散列?另外,什麼是散列表?我有C++和C#的經驗,我正在學習JS,Jquery和JSON。關於JSON,散列究竟是什麼?

回答

25

A散列是使用任意字符串/對象的稀疏陣列(根據實現方式,這一點對程序設計語言而變化),而不是簡單的整數作爲密鑰。

在Javascript中,任何對象在技術上都是散列(也稱爲字典,關聯數組等)。

例子:

var myObj = {}; // Same as = new Object(); 
    myObj['foo'] = 'bar'; 

    var myArr = []; // Same as = new Array(); 
    myArr[0] = 'foo'; 
    myArr[1] = 'bar'; 
    myArr['blah'] = 'baz'; // This will work, but is not recommended. 

現在,由於JSON基本上是使用JS結構和一些嚴格的準則來定義便攜式數據,相當於MyObj中以上將是:

{ "foo" : "bar" }; 

希望這有助於。

+0

哇,就是這樣嗎?我過於複雜的事情。 – Alex 2010-03-02 15:43:21

+0

關於最後一行的註釋:您可以在數組上設置屬性,就像它們是對象一樣 - 它們*是*對象,並且在這種情況下將像對象一樣操作。 – skeggse 2013-03-28 21:16:24

+0

@CMC:謝謝。更新了答案。 – 2013-03-28 22:17:14

11

哈希=字典。

散列:

{ "key1": "value1", "key2": "value2" } 
-1

我散列是一個隨機查找的數字,它是從一段數據生成的,並且對於相同的輸入總是相同的。例如,如果您從某些網站下載文件,他們將提供數據散列,以便您可以驗證您的下載沒有被破壞(這會改變散列)。 散列的另一個應用是在散列表(或散列圖)中。這是一個非常快速的關聯數據結構,散列用於索引到數組中。 C++中的std :: unorderd_map就是這樣一個例子。 您可以將JSON中的散列存儲爲字符串,例如「AB34F553」,並使用它來驗證數據。 JSON也支持字典類型元素。人們可以將它們稱爲哈希表,但這在技術上是不正確的,因爲沒有與JSON數據本身相關聯的特定數據結構實現。