2013-03-29 3 views
0

J'utilise JSON dans mon javascript et j'essaie d'obtenir une valeur de chaîne pour la représentation de la notation par points.Notation de points JSON à la chaîne

Par exemple AAA.BBB[0].CCC.DDD[5].EEE = 123 au format de notation JSON point.

Mais je veux obtenir la valeur AAA.BBB[0].CCC.DDD[5].EEE en tant que chaîne afin que je puisse l'enregistrer pour une utilisation ultérieure pour me permettre de modifier mon code JSON directement.

Existe-t-il une méthode dans Javascript ou jQuery pouvant renvoyer une représentation de valeur de chaîne? Je convertis les données JSON en une structure de liste et je souhaite enregistrer le format AAA.BBB[0].CCC.DDD[5].EEE en tant qu'ID. Lorsqu'un utilisateur modifie le contenu de cet élément de liste, il modifie directement les données JSON. Y aurait-il un meilleur moyen de sauvegarder l'emplacement dans l'identifiant? Pourquoi ne pas simplement stocker une référence à une partie interne de celui-ci?

+3

'JSON.stringify' – adeneo

+0

Un peu plus d'informations que la réponse de Adeneo peut-être: http://www.json.org /js.html – 11684

+1

Il n'existe pas de "format de notation par points JSON". –

Répondre

3

Le stocker comme une chaîne n'a pas beaucoup de sens. Si vous voulez juste un moyen plus court d'y accéder, stocker une référence a plus de sens.

var theCollection = AAA.BBB[0].CCC.DDD[5]; 
alert(theCollection.EEE); 

Cette référence peut ensuite être stockée sur un élément et récupérée plus tard.

$(someelement).data("jsonref",theCollection); 
var data = $(someelement).data("jsonref"); 
alert(data.EEE); 
data.EEE = "foobar"; 
data = $(someelement).data("jsonref"); 
alert(data.EEE); 
+0

C'est exactement ce que j'allais dire. C'est la meilleure réponse. – ErikE

0

Vous pouvez probablement utiliser eval sur la chaîne si vous êtes à la recherche d'exécuter une opération sur ce chemin, mais eval est assez dangereux car il permet l'exécution de code arbitraire. Si vous voulez JSON stringifier la structure entière, il y a JSON.stringify qui est une fonctionnalité standard dans la plupart des nouveaux navigateurs et Doug Crockford a sa propre version pour les anciens navigateurs here.

+0

La console permet l'exécution de code arbitraire, même si vous n'incluez aucun appel 'eval' dans votre programme. – 11684

1
var j_string = JSON.stringify(AAA.BBB[0].CCC.DDD[5].EEE); 

Si vous voulez juste la valeur retournée comme une chaîne faire:

var j_string_value = AAA.BBB[0].CCC.DDD[5].EEE.toString(); 
Questions connexes