Ответ 1
Есть много ситуаций, когда вы получаете текст JSON, который был автоматически создан некоторой библиотекой. На всех языках программирования существует множество библиотек, которые создают текст JSON (один
Я удивлен, что никто на StackOverflow не задавал этот вопрос раньше.
Просмотр документации по объекту JSON и быстрый поиск в Google не дали удовлетворительных результатов.
В чем его преимущество? Как это работает?
Изменение: Чтобы было понятно, взгляните на этот пример сглаживания/не сглаживания.
Самый быстрый способ сглаживать/не сглаживать вложенные объекты JSON
Спасибо.
Есть много ситуаций, когда вы получаете текст JSON, который был автоматически создан некоторой библиотекой. На всех языках программирования существует множество библиотек, которые создают текст JSON (один
Вот простой сценарий: в веб-приложении у вас есть HTTP POST, который обновляет сложный реляционный объект.
POST
update=1
&user.id=12345
&[email protected]
&user.profile.name=Mr. Test
&user.profile.age=42
&[email protected]
&[email protected]
&[email protected]
&user.profile.skill.0.id=100
&user.profile.skill.0.name=javascript
&user.profile.skill.1.id=200
&user.profile.skill.1.name=piano
Все уже в плоской структуре, поэтому почему бы не сделать простой привязкой один к одному? Если у вас есть список ограничений или требований безопасности, которые необходимы для обеспечения соблюдения, вы можете проверить их, выполнив поиск непосредственно в списке отсортированных ключей.
Плоские структуры легче понять людям и работать с ними даже при переходе с де-нормализацией базы данных. Это также позволяет использовать специфическую для контекста безопасность и ограничения в читаемом, но более подробном виде.
При полном просмотре пользовательского представления вы можете скрыть отображение идентификатора первичного ключа для списка навыков пользователя.
"user.profile.skill.#.id": { hidden: true, readonly: true }
Но если вы посмотрите прямо на умение (возможно, отредактируйте его как администратор), вы можете увидеть ID.
"skill.id": { readonly: true }
Если вы пишете приложение CMS с пользовательским ориентиром/самообслуживанием, вы получите больше пользователей на борту и сможете вносить вклад с использованием простой плоской модели (плоская абстракция базовой вложенной реляционной модели), чем вы бы с помощью вложенная модель.
TL;DR: Flat легче читать, чем вложенный. Хотя программисты могут обрабатывать вложенные схемы, рекурсивный синтаксический анализ и обработку; конечные пользователи и администраторы обычно предпочитают, чтобы часть абстрагировалась.