我有一个关于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中包含'键'的其他方式),但不确定是否是构造数据的好方法,因为仍然需要手动更新如果新对象引入了'key',例如对象'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']},
},
}
{ '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'),你可以在另一端使用多组set data-structure。网络索引双向信息并支持查询。
例如,在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'}
希望这可以帮助!