J'ai une structure de données JSON, comme indiqué ci-dessous: Je dois modifier les noms de clé de "nom" et "enfants" pour dire "clé" et "valeur". Toute suggestion sur la façon de faire cela pour chaque nom de clé de cette structure imbriquée? P> p>
3 Réponses :
Vous pouvez utiliser une fonction comme ceci: Notez que ce que vous n'avez pas une structure de données JSON (cela n'existe pas comme JSON est un format d'échange de données ) mais probablement un objet que vous avez obtenu d'une chaîne JSON. p> p>
La seule chose que je vois que cela le disqualifierait comme une balise JSON valide est le point-virgule (je n'ai aucune idée de pourquoi c'est là) i>. Outre cela, pourquoi cela ne serait-il pas valide JSON?
Parce que Json est un format i> string i>. Ceci est probablement un objet JavaScript simple, il manque seulement de var a = code> avant. D'où le ; code>.
Dystroy: Oui, JSON est un format de texte, mais cela ne signifie pas que ce n'est pas un balisage JSON assis dans un fichier sur le serveur, à l'exception de ce point-virgule. Ce n'est vraiment pas valide de toute façon comme indiqué.
... Mais je suppose que j'avais d'accord pour dire que le ; code> pourrait me faire maigrir de cette façon.
Essayez ceci: ou si vous devez prendre en charge les navigateurs plus âgés sans carte: p> function convert(data){
var children = [];
for (var i = 0, len = data.children.length; i < len; i++){
children.push(convert(data.children[i]));
}
return {
key: data.name,
value: children
};
}
Je ne sais pas pourquoi vous avez un point-virgule à la fin de votre marquage JSON (en supposant que c'est ce que vous avez représenté dans la question) em>, mais si cela est supprimé, vous pouvez utiliser un Fonction de reviver em> pour apporter des modifications lors de l'analyse des données. var parsed = JSON.parse(myJSONData, function(k, v) {
if (k === "name")
this.key = v;
else if (k === "children")
this.value = v;
else
return v;
});
Je vous remercie. Votre code fonctionne parfaitement. Désolé pour le point-virgule à la fin. C'était une faute de frappe, mais j'ai tellement appris de cette erreur.
@Hatelazy: Je vois quelque chose de nouveau, comme changer la clé, mais puis-je savoir où est cette fonction afin que je puisse plus de détails. Et si je veux ajouter un numéro à la clé de la boucle de la boucle pour, je ne peux pas le faire fonctionner comme - ceci.batchi.concat (chaîne (I)) = V; où je suis incrémenté dans la boucle.
@HATELYZY: Veuillez vous référer à Link .
Est-ce que quelqu'un sait pourquoi les points ne peuvent pas être remplacés dans le nom de la clé, mais une autre lettre peut-elle? jsfiddle.net/dpiret/dgk5fp16/5
Quand / où voulez-vous faire le changement?
... et pourquoi avez-vous un point-virgule à la fin? Qu'est-ce que vous représentez exactement dans la question?