2012-07-03 2 views
0

Comment puis-je transformer cet objet JSON:JSON Enchaînement

"context":{"#text":["Most Visited Pages "," 
Hall Residents Advanced Components"," Clerk"],"highlight":["City","City"]} 

dans:

Most Visited Pages <highlight>City</highlight> 
Hall Residents Advanced Components <highlight>City</highlight> Clerk 

en utilisant Javascript?

J'ai essayé:

function highlightContext_22(context) { 
     var highlighted; 
     $.each(context['#text'], function(key, val) { 
      highlighted += val + val.highlight; 
     }); 
     return highlighted; 
} 

sortie est:

undefinedMost Visited Pages undefined 
Hall Residents Advanced Components undefined Clerkundefined 
+1

[Qu'avez-vous essayé?] (Http://whathaveyoutried.com) – millimoose

+0

@Merlin signifie "ne postez pas de code dans les commentaires, modifiez votre question" – millimoose

+0

@Moushigo Donc, vous avez essayé, et ce qui était le problème avec ça? Quel résultat obteniez-vous et pourquoi était-ce faux? – millimoose

Répondre

2

La propriété val.highlight n'existe pas, ce qui est la raison pour laquelle vous obtenez non défini. Votre objet a une valeur de tableau pour la clé #text. La clé highlight est une propriété distincte et n'est donc pas accessible dans le contexte actuel.

La solution ci-dessous corrige la référence pour permettre de référencer la valeur highlight. J'ai ajouté des indicateurs supplémentaires à des fins d'illustration.

JavaScript:

var obj = { 
    "context": { 
     "#text": [ 
      "Most Visited Pages ", 
      " Hall Residents Advanced Components", 
      " Clerk" 
     ], 
     "highlight": [ 
      "City", 
      "City" 
     ] 
    } 
}; 

var result = []; 
var data = obj.context; 

for(var i=0; i < data['#text'].length; i++){ 
    result[i] = data['#text'][i] + (data.highlight[i] ? '<highlight>' + data.highlight[i] + '</highlight>' : ''); 
} 

document.getElementById('result').innerHTML = result.join(''); 

alert(document.getElementById('result').innerHTML); 

Démo: http://jsfiddle.net/Wv3vH/

NOTE: les données ci-dessus tente de comparer deux tableaux de longueur égale. Comme le tableau #text est un tableau plus grand que le tableau highlight, il existe une valeur indéfinie qui n'est pas affichée en raison de la logique booléenne pour vérifier si la valeur existe.

+0

Merci, je vais tout faux. – Moushigo