Лучший способ структурировать формат данных JSON - PullRequest
0 голосов
/ 19 апреля 2019

У меня вопрос по формату JSON для структурирования моих данных.Например, у меня есть формат структуры данных JSON ниже:

{
 'AAA': {
          '1': {Sample Data 1},
          '2': {Sample Data 2},
          '3': {Sample Data 3},
          },
 'BBB': {
          '1': {Sample Data 1},
          '3': {Sample Data 3},
          '4': {Sample Data 4},
          },
 'CCC': {
          '1': {Sample Data 1},
          '3': {Sample Data 2},
          },
 }

Основываясь на данных выше, я могу узнать, что объект 'AAA' содержит объекты '1', '2', '3';где объект «BBB» содержит «1», «3», «4» ... и т. д.У меня вопрос, как я могу структурировать данные, чтобы знать, что для объекта «1» есть также объект «AAA», объект «BBB» и объект «CCC»?Вместо того, чтобы готовить второй набор данных, как показано ниже, который вводит избыточные данные и обновление 1 набора, необходимо обновить второй.получить набор данных из другого измерения?

То, что я думаю об этом способе, может достичь той же цели, которую я предполагаю (или, наоборот, включить «ключи» в объект 1,2,3,4), но не уверенхороший способ структурировать данные, потому что все еще нужно вручную обновлять «ключи», если вводится новый объект, такой как объект «DDD».Пример:

{
 'AAA': {
          '1': {Sample Data 1, keys: ['AAA', 'BBB', 'CCC']},
          '2': {Sample Data 2, keys: ['AAA','CCC']},
          '3': {Sample Data 3, keys: ['AAA', 'BBB', 'CCC']},
          },
 'BBB': {
          '1': {Sample Data 1, keys: ['AAA', 'BBB', 'CCC']},
          '3': {Sample Data 3, keys: ['AAA', 'BBB', 'CCC']},
          '4': {Sample Data 4, keys: ['BBB']},
          },
 'CCC': {
          '1': {Sample Data 1, keys: ['AAA', 'BBB', 'CCC']},
          '3': {Sample Data 2, keys: ['AAA','CCC']},
          },
 }

1 Ответ

1 голос
/ 19 апреля 2019
{
 'AAA': {
          '1': {Sample Data 1, keys: ['AAA', 'BBB', 'CCC']},
          '2': {Sample Data 2, keys: ['AAA','CCC']},
          '3': {Sample Data 3, keys: ['AAA', 'BBB', 'CCC']},
          },
 'BBB': {
          '1': {Sample Data 1, keys: ['AAA', 'BBB', 'CCC']},
          '3': {Sample Data 3, keys: ['AAA', 'BBB', 'CCC']},
          '4': {Sample Data 4, keys: ['BBB']},
          },
 'CCC': {
          '1': {Sample Data 1, keys: ['AAA', 'BBB', 'CCC']},
          '3': {Sample Data 2, keys: ['AAA','CCC']},
          },
 }

Это все еще избыточные данные по сети, только с меньшей полезной нагрузкой.

Я предложу придерживаться первой структуры. Но вместо объекта для набора данных того же типа вы можете использовать массив объектов, который более подходит:

{
 'AAA': [
          '1': {Sample Data 1},
          '2': {Sample Data 2},
          '3': {Sample Data 3},
         ],
 'BBB': [
          '1': {Sample Data 1},
          '3': {Sample Data 3},
          '4': {Sample Data 4},
         ],
 'CCC': [
          '1': {Sample Data 1},
          '3': {Sample Data 2},
         ],
 }

И чтобы обеспечить двусторонний запрос (для объекта '1' также есть объект 'AAA', объект 'BBB' и объект 'CCC'), вы можете использовать несколько наборов набора структура данных на другом конце сети для индексации двусторонней информации и поддержки запросов.

Например, в Java это будет выглядеть так:

Set<Set<String>> objectMap1 = new HashSet<Set<String>>();
// objectMap1['AAA'] = {'1', '2', '3'}

Set<Set<String>> objectMap2 = new HashSet<Set<String>>();
// objectMap2['1'] = {'AAA', 'BBB', 'CCC'}

Надеюсь, это поможет!

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