我对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': {
'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']},
},
}
答案 0 :(得分:0)
{ '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集网络另一端的数据结构可为双向信息建立索引并支持查询。
例如,在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'}
希望这会有所帮助!