2010-10-29 10 views
0

Je voudrais créer une fonction capable de gérer JSON dans le format imbriqué suivant. Les clés changeront, c.-à-d. conditions - pourraient être n'importe quoi et la clé de sous-condition pourrait être n'importe quoi mais la structure reste la même.javascript/jquery en utilisant une variable pour référencer différentes parties d'un objet json/xml

Ma fonction est définie comme

populatePageEditorMenu: function (jsonPath, topLevel, childLevel){ 

et appelé par

populatePageEditorMenu("http://localhost/data/conditions.json", 'conditions', 'subcondition'); 

cela me permet de pointer vers différents bits de JSON avec des clés différentes avec la même structure mais je ne peux pas sembler obtenir la clé de sous-condition à configurer ma syntaxe n'est pas tout à fait raison.

avec ce qui suit JSON

{ 
    "conditions": [ 
     { 
      "condition": [ 
       { 
        "name": "TOP", 
        "subcondition": [ 
         { 
          "name": "CHILD1" 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 

Je peux faire référence aux conditions de haut niveau en tant que tel à l'aide de crochets ..

$.getJSON(jsonPath, 
        function(data) { 
         $.each(data[topLevel], function(topentryIndex, entry) { 

Cela fonctionne bien!

Le problème ne marche pas du paragraphe semblent fonctionner, j'ai eu avant cela en utilisant paramaterized a utilisé les ... Les crochets ne fonctionnent pas ici ...

$.each(this.subcondition, function(entryIndex, entry) { .... 

J'ai posté une version plus complète sur le jsfiddle le JSON peut être vu dans la vue CSS.

Référence - http://jsfiddle.net/wmitchell/QRkxd/

+0

Le code et JSON que vous avez posté ne vont pas du tout ensemble ... –

+0

a essayé de l'effacer un peu .. montre l'appel de la fonction et la définition. Un post plus complet peut être trouvé sur le ref de jsfiddle – wmitchell

+0

Votre jsFiddle n'est pas trop d'aide sans 'jsonPath' étant mis en place ... –

Répondre

0

Merci de regarder ce gars Excuses c'était probablement difficile pour moi d'expliquer ce que je cherchais.

Fondamentalement, je voulais savoir si je pouvais utiliser des variables pour représenter les champs que je tente d'accéder à l'intérieur d'un objet

j'ai pu utiliser des choses comme

$.each(data[topLevel], function(topentryIndex, entry) { 

Où toplevel était un représentant de la chaîne d'un champ dans l'objet

et

this["variablename"] 

pour le faire

Merci pour votre recherche. J'ai eu quelques erreurs dans mon json aussi qui n'a probablement pas aidé. Je ne sais pas Si je devrais laisser cet article ou le supprimer.