J'essaie de créer un tableau JSON mais cela ne fonctionne pas:

var test = '{"chapters":[{"id":"test1", "label":"Observation", "handler":"openChapter("observation")"}]}';

Je sais que le problème réside dans les citations concernant l'observation dans le gestionnaire.

J'ai essayé mais ça ne marche pas non plus (pas surprenant):

var test = '{"chapters":[{"id":"test1", "label":"Observation", "handler":"openChapter(\"observation\")"}]}';

Comment puis-je faire?

Merci de votre aide!

0
Powkachu 15 juil. 2015 à 11:36

3 réponses

Meilleure réponse

Vous devez l'échapper à nouveau (\\"), vous voulez que le littéral \ soit dans la chaîne pour que JSON.parse puisse le lire:

var test = '{"chapters":[{"id":"test1", "label":"Observation", "handler":"openChapter(\\"observation\\")"}]}';
4
franciscod 15 juil. 2015 à 08:39

Vous ne savez pas ce que vous essayez de faire? Si je comprends bien, vous souhaitez créer en JavaScript des données à envoyer sous forme JSON?

Alors vous devriez :

  1. créer un objet littéral
  2. transformer l'objet JS en une chaîne JSon

En ce qui concerne les littéraux d'objets JS, consultez cette page Web:
http://www.dyn-web.com/tutorials/object-literal/

Vous pouvez ensuite sérialiser cet objet en une chaîne JSON à l'aide de JSON.stringify ().

Un autre article qui est une bonne lecture!
http://benalman.com/news/ 2010/03 / theres-no-such-thing-as-a-json /

0
Pierre Goiffon 15 juil. 2015 à 08:56

Eh bien, la bonne façon d'échapper aux guillemets doubles (") est en effet une simple barre oblique inverse (\).

Cependant, vous créez une variable test en tant que chaîne et non en tant qu'objet JSON. Si vous souhaitez créer un objet JSON, vous pouvez faire:

var test = {"chapters":[{"id":"test1", "label":"Observation", "handler":"openChapter(\"observation\")"}]};

Mais si vous voulez le créer sous forme de chaîne à utiliser avec JSON.parse par exemple, vous devez échapper les barres obliques inverses maintenant avec une autre barre oblique inverse:

var test = '{"chapters":[{"id":"test1", "label":"Observation", "handler":"openChapter(\\"observation\\")"}]}';
var json = JSON.parse(test);

Définition JSON d'une chaîne:

Une chaîne est une séquence de zéro ou plusieurs caractères Unicode, entourée de guillemets doubles, utilisant des échappements antislash.

1
Strelok 15 juil. 2015 à 08:43