0

我想了解 JSONObject 的原因和/或核心逻辑是无序集。因为在我的大多数情况下,都会有一个请求需要按照时间/位置的顺序作为 JSONObject 响应。经过搜索,我发现很多成员告诉使用 JSONArray,我觉得这不是一个好的解决方案。

在继续进行之前,我想有一个清晰的想法。

先感谢您。

4

3 回答 3

3

JSONObject是无序的,因为JSON描述的对象是无序的,按照规范:

对象是一组无序的名称/值对。

(这是因为 JSON 派生自 [is a subset of] JavaScript 的对象初始化语法,并且 JavaScript 对象是无序的——因为在一般情况下没有理由对对象的属性进行排序。这可以留给对象,例如 JavaScript 的数组,它们只不过是对属性名称进行一些特殊处理的对象,以及相关的类似数组的函数。)

于 2012-07-23T12:08:28.620 回答
0

如果 JavaScript 规定了对象属性的顺序,它将排除在其实现中使用哈希表。另一方面,为什么首先要对对象的属性进行排序?正如我们所见,这似乎是一种任意约束,具有深远的负面影响。

于 2012-07-23T12:14:15.643 回答
0

真正的、完整的原因只有最终确定 ECMAScript 规范的 ECMA 委员会的成员才知道,因为 JSONObjects 是 JavaScript Objects 的子集;但是,这是我的猜测。

要求 JSON 对象的属性保持固定顺序可能会给数据结构增加额外的实现开销,否则如果没有该要求,数据结构会更简单。例如,一个 JSON 对象可以实现为一个简单的哈希表;但是,如果属性的顺序保持固定,则需要一个额外的数据结构来列出它们的顺序。

于 2012-07-23T12:09:06.460 回答