Supprimer les barres obliques inverses des données JSON dans JavaScript ou jQuery
var str = "{"data":"{\n \"taskNames\" : [\n \"01 Jan\",\n \"02 Jan\",\n \"03 Jan\",\n \"04 Jan\",\n \"05 Jan\",\n \"06 Jan\",\n \"07 Jan\",\n \"08 Jan\",\n \"09 Jan\",\n \"10 Jan\",\n \"11 Jan\",\n \"12 Jan\",\n \"13 Jan\",\n \"14 Jan\",\n \"15 Jan\",\n \"16 Jan\",\n \"17 Jan\",\n \"18 Jan\",\n \"19 Jan\",\n \"20 Jan\",\n \"21 Jan\",\n \"22 Jan\",\n \"23 Jan\",\n \"24 Jan\",\n \"25 Jan\",\n \"26 Jan\",\n \"27 Jan\"]}
var finalData = str.replace("\\", "");
mais cela ne fonctionne pas pour moi. De l'aide?
Votre chaîne n'est pas valide, mais en supposant qu'elle était valide, vous devrez faire:
var finalData = str.replace(/\\/g, "");
Lorsque vous souhaitez remplacer toutes les occurrences par .replace
, le premier paramètre doit être une expression régulière, si vous fournissez une chaîne, seule la première occurrence sera remplacée, c'est pourquoi votre remplacement ne fonctionnera pas.
À votre santé
tl; dr: Vous n'avez pas à supprimer les barres obliques, vous avez imbriqué JSON, et par conséquent vous devez décoder le JSON deux fois: DÉMO (notez que j'ai utilisé des doubles barres obliques dans l'exemple, car le JSON est à l'intérieur d'un littéral de chaîne JS).
Je suppose que votre JSON réel ressemble
{"data":"{\n \"taskNames\" : [\n \"01 Jan\",\n \"02 Jan\",\n \"03 Jan\",\n \"04 Jan\",\n \"05 Jan\",\n \"06 Jan\",\n \"07 Jan\",\n \"08 Jan\",\n \"09 Jan\",\n \"10 Jan\",\n \"11 Jan\",\n \"12 Jan\",\n \"13 Jan\",\n \"14 Jan\",\n \"15 Jan\",\n \"16 Jan\",\n \"17 Jan\",\n \"18 Jan\",\n \"19 Jan\",\n \"20 Jan\",\n \"21 Jan\",\n \"22 Jan\",\n \"23 Jan\",\n \"24 Jan\",\n \"25 Jan\",\n \"26 Jan\",\n \"27 Jan\"]}"}
C'est à dire. vous avez un objet de niveau supérieur avec une clé, data
. La valeur de cette clé est une chaîne contenant JSON elle-même. Cela est généralement dû au fait que le code côté serveur n'a pas créé correctement le JSON. Voilà pourquoi vous voyez le \"
à l'intérieur de la chaîne. Cela permet à l'analyseur de savoir que "
doit être traité littéralement et ne termine pas la chaîne.
Vous pouvez donc soit corriger le code côté serveur, afin de ne pas coder deux fois les données, ou vous devez décoder le JSON deux fois, par exemple.
var data = JSON.parse(JSON.parse(json).data));
essaye ça
var finalData = str.replace(/\\/g, '');