Рекомендации по дизайну JSON

Я разработал представление JSON почтового ящика, чтобы я мог легко искать почту, например mailjson[UID].Body.

Однако, посмотрев на Angularjs и Ember, шаблоны MVC JS, кажется, что JSON должен иметь формат:

[{
   "id": 1,
   "body": "Blah blah blah..."
 },
 {
   "id": 2,
   "body": "More blah foo blah"
 },
 {
   "id": 3,
   "body": "Hopefully you understand this example"
}]

И затем есть функция findAll (id), чтобы захватить элемент на основе идентификатора, который требуется, итерации через JSON. Итак, теперь мне интересно, имеет ли мой дизайн JSON достоинство? Я делаю это неправильно? Почему люди не используют дизайн поиска dict, который я использую с моим JSON?

Любые другие советы, чтобы убедиться, что у меня хороший дизайн структуры данных, я был бы благодарен.

Ответ 1

Лучшей практикой хранения большой таблицы в JSON является использование массива.

Причина в том, что при разборе массива JSON в массиве памяти нет штрафа за скорость построения карты. Если вам нужно построить индекс памяти в нескольких полях для быстрого доступа, вы можете сделать это во время или после загрузки. Но если вы храните JSON так же, как и вы, у вас нет выбора для быстрой загрузки без построения карты, потому что парсер JSON всегда будет строить эту огромную карту идентификаторов на основе вашей структуры.

Структура хранения данных в памяти не обязательно должна быть (и не должна быть) такой же, как структура хранилища на диске, потому что нет возможности сериализовать/десериализовать внутреннюю структуру карты JavaScript. Если бы это было возможно, вы бы сериализовали и хранили индексы так же, как MS SQL Server хранит таблицы и индексы.

Но если структура, которую вы используете, заставляет вас иметь одну и ту же структуру в памяти и на диске, то я поддерживаю ваш выбор использования id как ключа в одном большом объекте, потому что тогда легче передавать идентификатор в запросах JSON на сервер и с сервера на делать какие-либо действия с помощью элемента электронной почты или обновлять его в пользовательском интерфейсе, предполагая, что на сервере и в браузере сохраняется значительный список элементов электронной почты в памяти.