Мне нужно имя для конкретной структуры данных - PullRequest
1 голос
/ 24 октября 2011

Я продолжаю сталкиваться с определенным типом структуры данных и задаюсь вопросом, есть ли для нее имя. Он очень близко соответствует JSON, но не совсем. Правила таковы:

  1. Он полностью состоит из карт, массивов и примитивов.
  2. Это иерархическое. Карты содержат пары имя / значение, где значение может быть другой картой, массивом или примитивом. Массивы содержат значения с одинаковыми правилами.
  3. Верхний уровень - это всегда карта.
  4. Примитивы - это строки, целые числа, числа с плавающей точкой, логические значения и, возможно, даты.
  5. Иногда карта представляет собой просто неупорядоченный хэш, а иногда и порядок значения пары имя / значение.

Это действительно очень полезная структура. Вы можете использовать его для представления документов, записей базы данных, различных сообщений, http-запросов, множества других вещей. Я столкнулся с этим во Freemarker (как «модель данных»), Mongo и во всем, что использует JSON.

Это не совсем JSON, потому что это формат файла, а не спецификация для конкретной структуры данных. Это не «объект», потому что деревья объектов могут указывать на другие вещи, такие как потоки и функции. Это не DOM.

Что это?

Вокруг офиса, мы начали называть это "garg", для "обобщенного аргумента".

Ответы [ 5 ]

0 голосов
/ 12 января 2013

Структура представляет собой дерево с различными видами значений, хранящихся на его листьях. В Boost аналогичная структура называется Дерево свойств .

0 голосов
/ 25 октября 2011

Это общая структура хранения данных, которая охватывает иерархические данные. У меня нет общего имени для него, но если бы я реализовал такого зверя, скажем, в C ++, я бы, вероятно, назвал абстрактный базовый класс Variant и назвал бы конкретные типы по их именам: Integer, Array, Map и т. Д. Я бросил бы их в пространство имен, которое было бы связано с тем, где я их использую - или, возможно, я бы добавил префиксы для самих типов. Я также видел, как использовались такие структуры, но я не знаю, есть ли имя, которое я узнаю. A DataStore, Environment, StorageBin или что-то общее, что подразумевает хранение данных.

Однако я не вижу себя так называющей иерархию классов JSON. Я бы предоставил JsonSerializer или что-то подобное для сопоставления этих данных с JSON, если бы мне это было нужно.

0 голосов
/ 24 октября 2011

JSON - это не просто формат файла.JSON также является структурой данных.

Из JSON.org

JSON построен на двух структурах:

  1. Коллекция имени /пары значений.На разных языках это реализовано как объект, запись, структура, словарь, хеш-таблица, список ключей или ассоциативный массив.

  2. Упорядоченный список значений.В большинстве языков это реализовано как массив, вектор, список или последовательность.

Это универсальные структуры данных.

0 голосов
/ 24 октября 2011

Звучит так, как будто вы описываете ассоциативный массив с необязательным упорядочением.

Это то, что представляет JSON, за исключением того, что (я полагаю) JSON не предъявляет требования к упорядочению. Естественно, многие другие представления также описывают ассоциативные массивы, поэтому JSON является популярной сериализацией текста.


Обновление 1: JSON не является ассоциативным массивом. Это описание свойств объекта. Поскольку это очень часто истолковывается как ассоциативный массив, многие люди делают ту же ошибку, что и я. На самом деле, «обозначение объекта» является подходящим названием для этого - удивление, удивление. :) Кроме того, JSON - это не формат файла, это язык сериализации или разметки текста, который отличается от формата файла.

0 голосов
/ 24 октября 2011

Это не совсем JSON, потому что это формат файла, а не спецификация для конкретной структуры данных.

Возможно, не будет JSON (так как спецификациивключите правила синтаксиса), но ваше определение структуры определяет ту же структуру данных, что и JSON.

Я не думаю, что полезно называть эту структуру.Когда вы говорите о данных, просто назовите это data .Когда вам нужно обмениваться данными, вам нужен формат обмена данными .Теперь JSON оказывается чертовски хорошим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...