#json #data-structures #dataset #structure
#json #структуры данных #набор данных #структура
Вопрос:
У меня есть вопрос о формате 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': {
'AAA': {Sample Data A},
'BBB': {Sample Data B},
'CCC': {Sample Data C},
},
'2': {
'AAA': {Sample Data A},
},
'3': {
'AAA': {Sample Data A},
'BBB': {Sample Data B},
'CCC': {Sample Data C),
},
'4': {
'BBB': {Sample Data B},
},
}
Есть ли лучший метод / техника для структурирования моих данных, чтобы можно было легко получить набор данных из другого измерения?
То, что я думаю об этом способе, может достичь той же цели, которую я предполагаю (или наоборот, включить «ключи» в объект 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:
{ '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']}, }, }
Это все еще избыточные данные по сети, только с меньшей полезной нагрузкой.
Я предложу придерживаться первой структуры. Но вместо object для набора данных того же типа вы можете использовать массив объектов, который является более подходящим :
{
'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'}
Надеюсь, это поможет!