2017-07-05 14 views
-1

J'ai une liste d'objets avec un champ C_PARENT.Ce champ parent fait référence à un autre objet de la liste. Je voudrais créer une arborescence à partir de cette liste en fonction de ce champ.Création d'une arborescence de hiérarchie à l'aide de JSON

Voici mes données.

[{ 
    "C_ID" : 1.0, 
    "C_TITLE" : "Sparklers", 
    "C_PARENT" : 0.0, 
    "C_STATUS" : "Active" 
}, 

{ 
    "C_ID" : 2.0, 
    "C_TITLE" : "Twinklers", 
    "C_PARENT" : 0, 
    "C_STATUS" : "Active" 
}, 

{ 
    "C_ID" : 3.0, 
    "C_TITLE" : "Candles", 
    "C_PARENT" : 0.0, 
    "C_STATUS" : "Active" 
}, 

{ 
    "C_ID" : 4.0, 
    "C_TITLE" : "Chakkars", 
    "C_PARENT" : 0.0, 
    "C_STATUS" : "Active" 
}, 

{ 
    "C_ID" : 5.0, 
    "C_TITLE" : "Colour Chakkars", 
    "C_PARENT" : 4.0, 
    "C_STATUS" : "Active" 
}, 

{ 
    "C_ID" : 6.0, 
    "C_TITLE" : "Fancy Chakkars", 
    "C_PARENT" : 4.0, 
    "C_STATUS" : "Active" 
}, 

{ 
    "C_ID" : 7.0, 
    "C_TITLE" : "Fountains", 
    "C_PARENT" : 0.0, 
    "C_STATUS" : "Active" 
}, 

{ 
    "C_ID" : 8.0, 
    "C_TITLE" : "Whistling Fountains", 
    "C_PARENT" : 7.0, 
    "C_STATUS" : "Active" 
}, 

{ 
    "C_ID" : 9.0, 
    "C_TITLE" : "Fancy Fountains", 
    "C_PARENT" : 7.0, 
    "C_STATUS" : "Active" 
}, 

{ 
    "C_ID" : 10.0, 
    "C_TITLE" : "Fancy Colour Fountains", 
    "C_PARENT" : 7.0, 
    "C_STATUS" : "Active" 
}, 

{ 
    "C_ID" : 11.0, 
    "C_TITLE" : "Rockets", 
    "C_PARENT" : 0.0, 
    "C_STATUS" : "Active" 
}] 

J'ai besoin de convertir en structure arborescente.

[ 
    { 
    'C_ID': 1, 
    'C_TITLE': 'Sparklers', 
    'C_PARENT': 0, 
    'C_STATUS':'Active' 
    }, 
    { 
    "C_ID" : 2.0, 
    "C_TITLE" : "Twinklers", 
    "C_PARENT" : 0, 
    "C_STATUS" : "Active" 
    }, 
    { 
    "C_ID" : 3.0, 
    "C_TITLE" : "Candles", 
    "C_PARENT" : 0.0, 
    "C_STATUS" : "Active" 
    } 
    { 
    '"C_ID" : 4.0, 
    "C_TITLE" : "Chakkars", 
    "C_PARENT" : 0.0, 
    "C_STATUS" : "Active" 
    children: [ 
     { 
     "C_ID" : 5.0, 
     "C_TITLE" : "Colour Chakkars", 
     "C_PARENT" : 4.0, 
     "C_STATUS" : "Active" 
     }, 
     { 
     "C_ID" : 6.0, 
     "C_TITLE" : "Fancy Chakkars", 
     "C_PARENT" : 4.0, 
     "C_STATUS" : "Active" 
     } 
    ] 
] 

Je n'ai aucune idée.

Veuillez me conseiller,

Merci

+0

est vos données est un tableau d'objets? – azad

+0

Merci pour votre réponse.Ya mes données sont un tableau d'objets – ANISUNDAR

+0

Possible copie de [Construire l'arborescence à partir d'un tableau à plat en javascript] (https://stackoverflow.com/questions/18017869/build-tree-array-from-flat- array-in-javascript) –

Répondre

1

Je normaly utilisés pour créer une nouvelle chaîne avec des informations propertly

String.prototype.replaceAll = function (search, replacement) { 
    return this.replace(new RegExp(search, 'g'), replacement); 
}; 

var data = JSON.parse('[{"C_ID" : 1.0,"C_TITLE" : "Sparklers","C_PARENT" : 0.0, "C_STATUS" : "Active"},{ "C_ID" : 2.0, "C_TITLE" : "Twinklers", "C_PARENT" : 0, "C_STATUS" : "Active"},{ "C_ID" : 3.0, "C_TITLE" : "Candles", "C_PARENT" : 0.0, "C_STATUS" : "Active"},{ "C_ID" : 4.0, "C_TITLE" : "Chakkars", "C_PARENT" : 0.0, "C_STATUS" : "Active"},{ "C_ID" : 5.0, "C_TITLE" : "Colour Chakkars", "C_PARENT" : 4.0, "C_STATUS" : "Active"},{ "C_ID" : 6.0, "C_TITLE" : "Fancy Chakkars", "C_PARENT" : 4.0, "C_STATUS" : "Active"},{ "C_ID" : 7.0, "C_TITLE" : "Fountains", "C_PARENT" : 0.0, "C_STATUS" : "Active"},{ "C_ID" : 8.0, "C_TITLE" : "Whistling Fountains", "C_PARENT" : 7.0, "C_STATUS" : "Active"},{ "C_ID" : 9.0, "C_TITLE" : "Fancy Fountains", "C_PARENT" : 7.0, "C_STATUS" : "Active"},{ "C_ID" : 10.0, "C_TITLE" : "Fancy Colour Fountains", "C_PARENT" : 7.0, "C_STATUS" : "Active"},{ "C_ID" : 11.0, "C_TITLE" : "Rockets", "C_PARENT" : 0.0, "C_STATUS" : "Active"}]'); 

var result = '['; 

for (i = 0; i < data.length; i++) { 
    if (data[i].C_PARENT == 0 || data[i].C_PARENT == "0") { 
    if (i != 0) 
     result += ']},'; 
    result += '{"C_ID" : ' + data[i].C_ID + ', "C_TITLE" : "' + data[i].C_TITLE + '", "C_PARENT" : ' + data[i].C_PARENT + ', "C_STATUS" : "' + data[i].C_STATUS + '", "children" : ['; 
    } else { 
    result += '{"C_ID" : ' + data[i].C_ID + ', "C_TITLE" : "' + data[i].C_TITLE + '", "C_PARENT" : ' + data[i].C_PARENT + ', "C_STATUS" : "' + data[i].C_STATUS + '"},'; 
    } 
} 
result += ']}]'; 
result = result.replaceAll("},]", "}]"); 
var a = JSON.parse(result); 
document.getElementById('result').innerHTML = result + "<br/><br/><br/>" + a; 

https://jsfiddle.net/g9h9a9ep/

+0

Merci pour une réponse. En fait, j'utilise tapuscrit. Je viens d'utiliser cette var data = JSON.parse (liste de menu); Je reçois cette erreur Jeton inattendu o dans JSON à la position 1 – ANISUNDAR

+0

en novembre que vous pouvez le déboguer sur Internet Explorer, Firefox ou Chrome en appuyant sur 'F12' et en allant au troisième onglet vous pouvez mettre des points d'arrêt à votre fichier js appuyez sur 'F5 'pour recharger et voir ce qui cause cette erreur, est probablement pour une mauvaise chaîne formatée ou quelque chose de mal construit – Arngue

+0

Maintenant, j'ai résolu ce problème en utilisant cette ligne var data = JSON.parse (JSON.stringify (c.json())); J'utilise une typographie. Je reçois une autre erreur. La propriété 'replaceAll' n'existe pas sur le type 'String'. Comment puis-je résoudre ce problème? – ANISUNDAR