关于JSON,哈希表是什么?

31

我正在学习JSON,但我发现它也可以将所谓的“哈希”放入JSON中? 我在哪里可以找到哈希是什么? 或者你能向我解释一下哈希是什么吗? 另外,什么是哈希表? 我有C ++和C#方面的经验,正在学习JS,Jquery和JSON。

4个回答

32
哈希(Hash)是一种稀疏数组,使用任意字符串/对象(具体取决于编程语言的实现方式)而非纯整数作为键。
在 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" };

希望这能有所帮助。

关于你的最后一行注释:你可以像设置对象属性一样在数组上设置属性——它们对象,在这种情况下会像对象一样运作。 - skeggse
在Javascript中,对象并不是“技术上的哈希”,因为“哈希”不是哈希映射、字典或关联数组等的技术术语。 - bradw2k

16

哈希 = 字典。

一个哈希:

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

5
JSON支持字典类型的元素。人们可能称其为哈希表,这是一种数据结构类型。 然而,将JSON字典称为哈希表在技术上是不正确的,因为JSON数据本身没有特定的数据结构实现。
哈希是从数据生成的随机数字,并且对于相同的输入始终相同。例如,如果您从某些网站下载文件,它们会提供数据的哈希值,以便您可以验证下载未损坏(这将更改哈希值)。 哈希的另一个应用是哈希表(或哈希映射)。这是一种非常快速的关联数据结构,其中哈希用于索引到数组中。C ++中的std :: unorderd_map就是一个例子。 您可以将哈希存储在JSON中,例如像“AB34F553”这样的字符串,并使用它来验证数据。

0
json.org上,“JSON对象”是“名称/值对的集合。在不同的语言中,这被实现为对象、记录、结构、字典、哈希表、键列表或关联数组。”
使用“哈希”这个模糊的术语来表示JSON对象是令人困惑的。“哈希”确实被用作以下缩写:哈希映射、字典、键值结构等。但它也是计算哈希函数得到的哈希值的缩写。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接