Замените одиночную обратную косую черту на двойную обратную косую черту в JavaScript

Я использую результат json из Bing Search API. В результате двойные кавычки экранируются одной обратной косой чертой. Однако Javascript этого не принимает. Это требует, чтобы я избегал двойных кавычек, используя двойную обратную косую черту. Итак, мой вопрос заключается в том, как заменить одинарную обратную косую черту на двойную обратную косую черту. Например, часть кода json выглядит так

"Description":"LONDON Britain should stay in the EU \"warts and all\", the opposition Labour leader will say on Thursday..."

Я хотел бы, чтобы это было так

"Description":"LONDON Britain should stay in the EU \\"warts and all\\", the opposition Labour leader will say on Thursday..."

Я попробовал следующее решение

json = '"Description":"LONDON Britain should stay in the EU \"warts and all\", the opposition Labour leader will say on Thursday..."';
dfe = JSON.stringify(json);
dfe = dfe.replace(/\\"/g,'\\\\"');

Однако это не сработало. Он заменил все обратные косые черты перед всеми двойными кавычками. Из этого пошло...

\"Description\":\"LONDON Britain should stay in the EU \"warts and all\", the opposition Labour leader will say on Thursday...\"

...к этому

\\"Description\\":\\"LONDON Britain should stay in the EU \\"warts and all\\", the opposition Labour leader will say on Thursday...\\"

Может ли кто-нибудь сказать мне, как заменить \" на \\" ?

Изменить: я хочу сделать это

<p id="demo"></p>
var json = '{"d":{"results":[{"__metadata":{"uri":"https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/News?Query=\u0027britain\u0027&$skip=1&$top=1","type":"NewsResult"},"ID":"f1c27ae7-bf16-4741-a789-897f4878c2e1","Title":"Britain should stay in EU \u0027warts and all\u0027 - Corbyn | Reuters","Url":"http://www.firstpost.com/world/britain-should-stay-in-eu-warts-and-all-corbyn-reuters-2728514.html","Source":"Firstpost","Description":"LONDON Britain should stay in the EU \"warts and all\", the opposition Labour leader will say on Thursday, making his first big intervention in the referendum campaign as he seeks to counter criticism he is not doing enough to persuade his voters to back the ...","Date":"2016-04-14T05:10:45Z"}],"__next":"https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/News?Query=\u0027britain\u0027&$skip=10&$top=10"}}';

obj = JSON.parse(json);
document.getElementById("demo").innerHTML = obj.d.results[0].Title;

person grindel    schedule 14.04.2016    source источник
comment
Чего вы в конечном итоге пытаетесь достичь? Почему бы просто не окружить вашу строку json {}, чтобы сделать ее допустимой JSON, а затем проанализировать как есть, используя JSON.parse?   -  person amphetamachine    schedule 14.04.2016
comment
Фактический код имеет { } вокруг кода json. Json = '...' - это часть, в которой у меня проблема. @amphetamachine   -  person grindel    schedule 14.04.2016
comment
Должен ли я опубликовать всю строку json? @амфетамашина   -  person grindel    schedule 14.04.2016
comment
В любом случае, если я использую JSON.parse(), это не сработает.   -  person grindel    schedule 14.04.2016
comment
Итак, Bing вернул вам неверный JSON? Интересный...   -  person amphetamachine    schedule 14.04.2016
comment
Нет, возвращенный файл json действителен в соответствии с онлайн-валидаторами, такими как jsonlint.com. Однако это не сработало. Я разместил вопрос здесь: stackoverflow.com/questions/36614483 / Там люди предложили мне заменить одинарную обратную косую черту на двойную обратную косую черту. Как именно это сделать, я не мог пройти через google и другие вопросы здесь. Итак, я решил спросить. @амфетамашина   -  person grindel    schedule 14.04.2016
comment
Можете ли вы опубликовать полный json?   -  person Saurin Dashadia    schedule 14.04.2016
comment
У меня есть отредактированный вопрос. json = 'ЗДЕСЬ› '; @СД.   -  person grindel    schedule 14.04.2016
comment
Почему вы назначаете JSON как строку?   -  person Saurin Dashadia    schedule 14.04.2016


Ответы (2)


Вместо

var json = '{"d":{"results":[{"__metadata":{"uri":"https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/News?Query=\u0027britain\u0027&$skip=1&$top=1","type":"NewsResult"},"ID":"f1c27ae7-bf16-4741-a789-897f4878c2e1","Title":"Britain should stay in EU \u0027warts and all\u0027 - Corbyn | Reuters","Url":"http://www.firstpost.com/world/britain-should-stay-in-eu-warts-and-all-corbyn-reuters-2728514.html","Source":"Firstpost","Description":"LONDON Britain should stay in the EU \"warts and all\", the opposition Labour leader will say on Thursday, making his first big intervention in the referendum campaign as he seeks to counter criticism he is not doing enough to persuade his voters to back the ...","Date":"2016-04-14T05:10:45Z"}],"__next":"https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/News?Query=\u0027britain\u0027&$skip=10&$top=10"}}';

obj = JSON.parse(json);

Попробуй это:

var json = {"d":{"results":[{"__metadata":{"uri":"https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/News?Query=\u0027britain\u0027&$skip=1&$top=1","type":"NewsResult"},"ID":"f1c27ae7-bf16-4741-a789-897f4878c2e1","Title":"Britain should stay in EU \u0027warts and all\u0027 - Corbyn | Reuters","Url":"http://www.firstpost.com/world/britain-should-stay-in-eu-warts-and-all-corbyn-reuters-2728514.html","Source":"Firstpost","Description":"LONDON Britain should stay in the EU \"warts and all\", the opposition Labour leader will say on Thursday, making his first big intervention in the referendum campaign as he seeks to counter criticism he is not doing enough to persuade his voters to back the ...","Date":"2016-04-14T05:10:45Z"}],"__next":"https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/News?Query=\u0027britain\u0027&$skip=10&$top=10"}};

Это будет объект JSON.

person Saurin Dashadia    schedule 14.04.2016
comment
И что ? Если я сделаю это, а затем попытаюсь отобразить obj.d.results[0].Title, это не сработает - person grindel; 14.04.2016
comment
Тогда ваша переменная json будет самим объектом. Попробуйте использовать json.d.results[0] - person Saurin Dashadia; 14.04.2016
comment
API возвращает данные в формате объекта JSON, используя заголовок applicaiton/json. Итак, ваш ответ является объектом, а не строкой. - person Saurin Dashadia; 14.04.2016
comment
Добро пожаловать, я рад помочь вам. - person Saurin Dashadia; 15.04.2016

Как насчет этого?

JSON.stringify({"Description":"LONDON Britain should stay in the EU \"warts and all\", the opposition Labour leader will say on Thursday..."}).replace(/\\/g, "\\\\")
person Raul Fernandez    schedule 14.04.2016
comment
Я сделал это: dfe = JSON.stringify(json).replace(/\\/g, \\\\); obj = JSON.parse(dfe); document.getElementById(demo).innerHTML = obj.d.results[0].Title; Это не сработало. @Рауль Фернандес - person grindel; 14.04.2016