Comment remplacer les “ \ ” en javascript
J'ai une zone de texte qui affiche des informations pour le serveur, et il est au format JSON. Disons que je veux entrer deux cotations pour la valeur, et le JSON struct ressemblerait à:
{
"test": """"
}
J'en ai besoin pour ressembler à:
{
"test": "\"\""
}
donc il va suivre JSON normes et peut être analysée/stringifyable.
J'ai essayé d'utiliser
var val = myVal.replace('"', "\\\"");
mais cela n'a pas fonctionné. val
se termine avec un seul échappé à citer comme \""
Toute aide est très appréciée!
Ce qui ne "cela n'a pas fonctionné"? Ce ne fonctionne pas? Ce qui s'est passé? Montrez-nous un cas de test pour travailler avec.
doit pas vous faire la conversion avant de mettre des données en JSON?
que voulez-vous faire avec les échappé à la chaîne?
Les zones de texte ne "post" quoi que ce soit sur leur propre. Et vous n'avez pas été clair sur la façon dont votre interface est utilisée. Est-ce que votre script de construire une chaîne JSON? L'utilisateur doit-il entrer? Montre-nous ton code.
De me couper un peu de mou, j'ai dû me dépêcher pour se rendre à une réunion à l'heure.
doit pas vous faire la conversion avant de mettre des données en JSON?
que voulez-vous faire avec les échappé à la chaîne?
Les zones de texte ne "post" quoi que ce soit sur leur propre. Et vous n'avez pas été clair sur la façon dont votre interface est utilisée. Est-ce que votre script de construire une chaîne JSON? L'utilisateur doit-il entrer? Montre-nous ton code.
De me couper un peu de mou, j'ai dû me dépêcher pour se rendre à une réunion à l'heure.
OriginalL'auteur Darcy | 2011-08-12
Vous devez vous connecter pour publier un commentaire.
Ma réponse fait quelques hypothèses, que j'ai eu à remplir le plutôt importantes lacunes dans votre question:
Si j'ai le droit, nous allons procéder...
De référence code
Donc, avec quelques espaces réservés, vous êtes en train de faire:
Démonstration en direct, montrant le mal formé JSON.
Première tentative
Pour s'assurer que
JSON
est valide, échapper toutes les citations et les barres obliques inverses qu'il peut contenir. Vous avez déjà donné un rendez-vous à:et le résultat de votre tentative est:
Seulement la première citation a été échappé. C'est parce qu'un exemple de la chaîne de recherche est remplacée par défaut.
Mozilla documentation dit:
De travail tentative
Malheureusement, la
flags
paramètre est non-standard, nous allons donc passer à la regex version dereplace
, et l'utilisation de la/g
commutateur:(Vous remarquerez que j'ai également résumés de la chaîne de remplacement, pour des raisons de concision.)
Résultat:
Démonstration en direct. Hourra!
Solution complète
Nous allons également ajouter de la logique de barres obliques inverses, et nous obtenons ceci:
Résultat:
Démonstration en direct.
OriginalL'auteur Lightness Races in Orbit
Utiliser cette
replace
et trois barres obliques inverses dans le deuxième argument. 🙂Merci cela a fonctionné
Ma réponse souligne quelques autres considérations que vous devez faire. Il a également explique le problème. Assurez-vous de le lire.
OriginalL'auteur Mrchief
Il suffit de créer un tableau JS
et de laisser le JSON poignée de l'interface de l'échappement pour vous. Vous ne devriez jamais avoir à traiter avec les détails vous-même.
(Aussi, ce n'est pas un tableau. S'il vous plaît arrêter la propagation fadaises.)
pris mon temps à réaliser JSON et le javascript les objets qui ont été en fait des choses différentes...
Aussi, d'accord, ce n'est pas un tableau! C'est un objet. @Marc B tableaux utilisez [] {} et sont uniquement indexé numériquement en JS. Des objets ont la fonctionnalité de nice permettant de tableau de style de l'accès.
J'ai décidé de downvote. Il n'y a aucune indication qu'il y a de tout "interface JSON" ici. Je suis sûr maintenant que l'OP est juste la construction d'une chaîne JSON.. et c'est pas la même chose qu'un objet Javascript.
OriginalL'auteur Marc B
Comme vous l'avez dit vous obtenez la chaîne à partir d'une zone de texte vous n'avez pas besoin de faire quoi que ce soit pour le récupérer sur le serveur. Si vous obtenez la valeur de la zone de texte via jQuery
$()
ou de notation puredocument.getElementById
il sera déjà échappées. JavaScript n'est pas prendre la valeur de votre zone de texte et d'essayer de le mettre entre guillemets.Si vous zone de texte a
""
entré en elle,document.getElementById('mytextbox').value
n'est pas égal à"\"\""
. Les barres obliques inverses ne sont nécessaires que lorsque vous êtes à la définition d'une chaîne littérale.Essayez de supprimer tous vos échapper et regex remplacement et juste envoyer les données à partir de la zone de texte sans rien faire pour elle. Votre json devrait ressembler à quelque chose comme:
OriginalL'auteur Endophage