构建JSON数据格式的更好方法

问题描述 投票:0回答:1

我有一个关于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']},
          },
 }
json data-structures dataset structure
1个回答
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 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'}

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.