Удаление обратных косых черт из Json Data в JavaScript

Удаление обратных косых черт из данных JSON в JavaScript или 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("\\", "");

но это не работает для меня. Любая помощь?

Ответ 1

Ваша строка недействительна, но если предположить, что она действительна, вам нужно будет:

var finalData = str.replace(/\\/g, "");

Если вы хотите заменить все вхождения на .replace, первым параметром должно быть регулярное выражение, если вы .replace строку, будет заменено только первое вхождение, поэтому ваша замена не будет работать.

ура

Ответ 2

tl; dr: Вам не нужно удалять косые черты, у вас есть вложенный JSON и, следовательно, нужно дважды декодировать JSON: DEMO (обратите внимание, что в примере я использовал двойные слэши, потому что JSON находится в строковом литерале JS).


Я предполагаю, что ваш фактический JSON выглядит

{"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\"]}"}

Т.е. у вас есть объект верхнего уровня с одним ключом, data. Значение этого ключа - это строка, содержащая сам JSON. Обычно это происходит потому, что код на стороне сервера неправильно создал JSON. Вот почему вы видите \" внутри строки". Это позволяет синтаксическому анализатору знать, что " нужно обрабатывать буквально и не прерывать строку.

Таким образом, вы можете исправить код на стороне сервера, чтобы вы не дважды закодировали данные, или вам нужно дважды декодировать JSON, например

var data = JSON.parse(JSON.parse(json).data));

Ответ 3

попробуй это

var finalData = str.replace(/\\/g, '');