2010-03-02 61 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数据本身相关联的特定数据结构实现。