通过合并将数据集转换为JSON树

Rob*_*ert 8 javascript asp.net serialization json c#-4.0

说我有以下数据集.

???????????????????????????????????????
?  Category   ?     Item      ? Color ?
???????????????????????????????????????
? Electronics ? Mobile        ? Black ?
? Electronics ? Mobile        ? Green ?
? Electronics ? Laptop        ? Black ?
? HomeNeeds   ? VaccumCleaner ? white ?
? HomeNeeds   ? Refrigerator  ? Red   ?
? Wearable    ? AppleWatch    ? Red   ?
???????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

我想将其转换为SOMETHING,如下面的JSON格式,以便我可以加载到树视图控件.最好的方法是什么?主要区别在于合并相同类别或项目!我可以在C#中解析节点到节点,用前一个节点检查它,如果相同则合并它!并手动创建它,但有没有其他替代方案而不是这个漫长而复杂的过程?

{
    "Categories" : [
        {"Electronics" : [
                {"Mobile" : [
                    {"color":"Black"},
                    {"color":"Green"}
                    ]},
                {"Laptop":[
                    {"color":"Black"}
                    ]}
            ]},
        {"HomeNeeds":[
            {"VaccumCleaner": [
                    {"color":"white"}
                ]},
            {"Refrigerator":[
                {"color": "Red"}
                ]}
            ]},
        {"Wearable":[
            {"Applewatch":[
                {"color":"Red"}
                ]}
            ]}
        ]
    }
Run Code Online (Sandbox Code Playgroud)

Jos*_* A. 2

使用数组。

var products = new Array(); // using new Array() to avoid mess

   products = 
    [
        [ // Home Needs
            [
                "Refrigerator",
                "red",
                "$500",
            ],
            [
                "VacuumCleaner",
                "white",
                "$50",
            ]
        ],
        [ // Wearable
            [
                "Applewatch",
                "Red",
                "$14, 000",
            ],
        ],
    ]
Run Code Online (Sandbox Code Playgroud)

这是一个关于如何使用它的示例。

function getInfoOn(category,nameofappliance) { // 0 for category is home needs, etc
    for (var i=0; i < products[category].length; i++) {
        for(var l=0; l < products[i].length; l++) {
            for (var b=0; b < i[category][l].length; b++) {
                console.log('Name: '+ i[category][l][0]);
                console.log('Price: '+i[category][l][2]);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,上述代码仅作为示例。它应该可以正常工作,但我在编写时可能犯了一个错误。这只是为了表明我的观点。