Comment puis-je convertir une chaîne qui décrit un objet en une chaîne JSON à l’aide de JavaScript (ou jQuery) ?
par exemple : convertir ce (pas une chaîne JSON valide) :
dans ceci :
J’aimerais éviter d’utiliser `` si possible...
Comment puis-je convertir une chaîne qui décrit un objet en une chaîne JSON à l’aide de JavaScript (ou jQuery) ?
par exemple : convertir ce (pas une chaîne JSON valide) :
dans ceci :
J’aimerais éviter d’utiliser `` si possible...
Si la chaîne est à partir d'une source fiable, vous pouvez utiliser eval
alors JSON.stringify
le résultat. Comme ceci:
var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }";
var json = JSON.stringify(eval("(" + str + ")"));
Notez que lorsque vous eval
un objet littéral, il doit être enveloppé dans des parenthèses, sinon les accolades sont analysées comme un bloc au lieu d'un objet.
Je suis également d'accord avec les commentaires en-dessous de la question qu'il serait beaucoup mieux de coder l'objet en JSON valide pour commencer et éviter d'avoir à analyser, encoder, puis, vraisemblablement, de l'analyser à nouveau. HTML prend en charge une seule cité attributs (juste être sûr de HTML-encoder n'importe quel guillemets à l'intérieur des chaînes de caractères).
Votre chaîne n'est pas valide JSON, donc, JSON.parse
(ou jQuery $.parseJSON
) ne fonctionne pas.
Un autre moyen serait d'utiliser eval
"analyser" le "non valide" JSON, puis stringify
"convertir" à JSON valide.
var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }"
str = JSON.stringify(eval('('+str+')'));
Je suggère plutôt que d'essayer de "réparer" votre invalid JSON, vous commencez avec JSON valide en premier lieu. Comment est - str
générée, il doit être fixé, avant de elle est générée, pas après.
EDIT: Vous avez dit (dans les commentaires) cette chaîne est stockée dans un attribut de données:
<div data-object="{hello:'world'}"></div>
Je vous suggère de fixer ici, alors il peut simplement être JSON.parse
d. Tout d'abord, ils ont les clés et les valeurs doivent être cités entre guillemets doubles. Il devrait ressembler (un seul cité attributs HTML sont valables):
<div data-object='{"hello":"world"}'></div>
Maintenant, vous pouvez simplement utiliser JSON.parse
(ou jQuery $.parseJSON
).
var str = '{"hello":"world"}';
var obj = JSON.parse(str);
Utiliser du code simple dans le lien ci-dessous :
http://msdn.Microsoft.com/es-es/Library/IE/cc836466%28V=vs.94%29.aspx
et vers l’arrière
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.