В моем .js есть строка

var jdata ="[{\"name\":\"John\"}]"

Я хочу преобразовать его в [{"name": "John"}].

Я попробовал следующее, но потерпел неудачу

jdata = jdata.replace("\"","\"")
jdata = jdata.replace("\\"","\"") jdata = jdata.replace("\\\"","\"")

Какой правильный способ заменить?

-1
Derrick 1 Фев 2013 в 13:48

4 ответа

Лучший ответ

Если вы хотите, чтобы он стал объектом, просто сделайте это:

JSON.parse(jdata);

Результат будет [{"name":"John"}] объективирован.

В противном случае у вас уже есть работа. Если вы попытаетесь напечатать "[{\"name\":\"John\"}]", вы увидите, что в нем нет символа \, поскольку он является escape-символом.

2
Masiar 1 Фев 2013 в 09:53

\ это просто использование экранирования двойных кавычек внутри строки (потому что вы используете двойные кавычки снаружи).

На самом деле в вашей строке нет \ символа.

Если вы хотите превратить строку в объект, используйте:

var obj = JSON.parse(jdata);
5
xdazz 1 Фев 2013 в 09:51

Когда вы напечатаете строку, вы увидите, что escape-символ \ не отображается. Это просто необходимо, потому что что-то заключенное в кавычки не может содержать кавычки, которые не экранированы.

1
Ivaylo Strandjev 1 Фев 2013 в 09:50

Если все, что вам нужно, это преобразовать его в строку [{"name":"John"}], вы можете использовать регулярные выражения для этого:

jdata = jdata.replace(/\\\"/,"\"");
0
aazev 1 Фев 2013 в 09:55