2010-04-08 9 views
1

J'essaie d'extraire les noms des champs dans l'en-tête de certaines sorties JSON. Ce qui suit est un échantillon de l'info d'en-tête JSON:Boucler les tableaux JSON

{"HEADER":{"company":{"label":"Company Name"},"streetaddress":{"label":"Street Address"},"ceo":{"label":"CEO Name","fields":{"firstname":{"label":"First Name"},"lastname":{"label":"Last Name"}}} 

Je suis en mesure de boucle à travers l'en-tête et une sortie sur le terrain et l'étiquette (par exemple société et Nom de la société) en utilisant le code suivant:

obj = JSON.parse(jsonResponse); 

for (var key in obj.HEADER) { 
    response.write (obj.HEADER[key].label); 
    response.write (key); 
} 

mais ne peut pas comprendre comment faire une boucle et sortir le sous-tableau de champs (ie prénom et prénom).

Des idées?

Répondre

2

Essayez ceci?

obj = JSON.parse(jsonResponse); 

for (var key in obj.HEADER) { 
    response.write (obj.HEADER[key].label); 
    response.write (key); 
    if (obj.HEADER[key].fields) { 
     for (var fieldKey in obj.HEADER[key].fields) { 
      response.write(obj.HEADER[key].fields[fieldKey].label); 
      response.write(fieldKey); 
     } 
    } 
} 

Ou, si les champs eux-mêmes peuvent avoir des champs encore plus, essayez récursion:

function parseResults(obj) { 
    for (var key in obj) { 
     response.write (obj[key].label); 
     response.write (key); 
     if (obj[key].fields) { 
      parseResults(obj[key].fields); 
     } 
    } 
} 

obj = JSON.parse(jsonResponse); 
parseResults(obj.HEADER);