我需要一个特定数据结构的名称

时间:2011-10-24 19:42:53

标签: data-structures computer-science

我一直在遇到某种数据结构,并想知道它是否有名称。它非常接近JSON,但并不完全。规则是:

  1. 它完全由地图,数组和基元组成。
  2. 分层次。地图包含名称/值对,其中值可以 是另一个地图,一个数组或一个基元。数组包含具有相同规则的值。
  3. 最高级别始终是地图。
  4. 原语是字符串,整数,浮点数,布尔值,也可能是 日期。
  5. 有时地图只是一个无序的哈希,有时候是顺序 名称/价值对的重要性。
  6. 这是一个非常非常有用的结构。您可以使用它来表示文档,数据库记录,各种消息,http请求,很多东西。我在Freemarker(作为'数据模型'),Mongo和任何使用JSON的东西中遇到过它。

    这不是JSON,因为这是一种文件格式,而不是特定数据结构的规范。它不是“对象”,因为对象树可以指向其他事物,如流和函数。它不是DOM。

    这是什么?

    在办公室周围,我们已经开始将其称为“garg”,用于“泛化论证”。

5 个答案:

答案 0 :(得分:0)

  

这不是真正的JSON,因为这是一种文件格式,而不是特定数据结构的规范。

它可能不是 JSON(因为规范包含语法规则),但您的结构定义定义了与JSON相同的数据结构。

我认为命名这个结构并不有用。在谈论数据时,只需将其称为数据即可。当您需要交换数据时,您需要数据交换格式。现在JSON被证明是一个非常好的。

答案 1 :(得分:0)

JSON不仅仅是一种文件格式。 JSON也是一种数据结构。

来自JSON.org

  

JSON基于两种结构:

     
      
  1. 名称/值对的集合。在各种语言中,这是   实现为对象,记录,结构,字典,哈希表,键控   列表或关联数组。

  2.   
  3. 有序的值列表。多数情况   语言,这被实现为数组,向量,列表或序列。

  4.         

    这些是通用数据结构。

答案 2 :(得分:0)

听起来你正在描述一个associative array,可选择排序。

这就是JSON所代表的,除了(我相信)JSON没有强加订购要求。当然,许多其他表示也描述了关联数组,这就是为什么JSON是一种流行的文本序列化。


更新1:JSON不是一个正确的关联数组。它是对象属性的描述。因为它经常被解释为关联数组,所以很多人犯了同样的错误。事实上,“对象符号”是它的正确名称 - 惊喜,惊喜。 :)此外,JSON不是文件格式 - 它是文本序列化或标记语言,它与文件格式不同。

答案 3 :(得分:0)

它是一种携带分层数据的通用数据存储结构。我没有它的通用名称,但如果我要在C ++中实现这样的野兽,我可能会将抽象基类称为Variant,并按名称命名具体类型:IntegerArrayMap等等。我会把它们放在一个名称空间中,这个名称空间与我使用它们的位置有关 - 或者我可能会在这些类型中加上前缀。我也见过这样的结构,但我不知道是否有一个我认识的名字。 DataStoreEnvironmentStorageBin或任何通用且暗示存储数据的内容都可以。

但我并不认为自己会调用这样的类层次结构JSON。如果我需要,我会提供一个JsonSerializer或其他类似的数据来将这些数据映射到JSON。

答案 4 :(得分:0)

结构是,其叶子上存储了不同类型的值。 在Boost中,类似的结构称为 Property Tree