上下文
我有一组JSON数据存储为对象。我想通过特定属性“分组”此数据。这有效。但后来我希望能够进一步对已经分组的数据进行分组。这是我被卡住的地方。我正在关注的过程可能完全错误,所以如果你有更好的分组方法,并进一步分组JSON数据,请说。
过程
获取data
对象,并将其替换为包含groupLevel
,filter
和新data
对象的新对象,依此类推,直到所有分组都已完成。
问题
如何遍历此结构,专门针对最低data
对象,创建如下的新分组(我可以这样做),然后将整批作为全新结构返回,用于其余的代码。问题在于保持结构完整,同时能够在最低级别进行更改。
原始数据结构:
Object:
- attr1:"val1"
- attr2:"val2"
- attr3:"val3"
- attr{n}:"val{n}"
分组数据结构:
Object:
- groupLevel:1
- filter:"attr2"
- data:Object:
- "val2a": Array[18]
- 0: Object
- attr1:"val1"
- attr2:"val2"
- attr3:"val3"
- attr4:"val4"
- attr{n}:"val{y}"
- 1: Object
- 2: Object
- 3: Object
- {n}: Object
- "val2b": Array[15]
- "val2c": Array[6]
- "val2d": Array[3]
- "val2e": Array[2]
分组数据结构(猜测,因为我不知道如何进入这个阶段,因此这个问题):
Object:
- groupLevel:2
- filter:"attr2"
- data:Object:
- "val-hdfgdhdd": Array[20]
- "val-hdfgddfd": Array[10]
- "val-hdgggggg": Array[22]
- groupLevel:1
- filter:"attr2"
- data:Object:
- "val2a": Array[18]
- 0: Object
- attr1:"val1"
- attr2:"val2"
- attr3:"val3"
- attr4:"val4"
- attr{n}:"val{y}"
- 1: Object
- 2: Object
- 3: Object
- {n}: Object
- "val2b": Array[15]
- "val2c": Array[6]
- "val2d": Array[3]
- "val2e": Array[2]
我能够进行第1组,但现在我正在尝试对分组数据集进行分组,然后我意识到,如下所示,我每次向下钻取时都会“丢弃”更高级别,所以我得到了我的最低data
对象,在我用另一个分组级别替换最终的'data'对象后,我已经丢失了上面的所有级别。但是......我如何保持整个结构并进行新的分组?
当前失败的代码段以深入挖掘此新结构:
if(baseObject['groupLevel']) {
while (baseObject['groupLevel'] != 1) {
baseObject['groupLevel']++;
baseObject = baseObject['data'];
}
// once out of the loop, I 'should' be left with a baseObject which I can further group.
} else {
// baseObject with no grouping, group the data, and store it in the structure shown above, giving it a level of 1.
}
根据用户对不完整结构示例的反馈更新了问题。顺便说一句,我可能完全错了。如果有人能提出更好的方法来分组JSON数据,请说。