2014-12-31 7 views
0

Предположим, у меня есть простой объект JSON следующим образом.Заменить двойные кавычки косой чертой плюс двойные кавычки в Javascript объекта JSON

{"test":"test"} 

Теперь я хочу, чтобы преобразовать его в следующем формате

{\"test\":\"test\"} 

Я нашел некоторые из решений заменить двойные кавычки с косой черты и двойных кавычках, но все эти работы на текстовом формате.

Мне нужно передать этот вид формата AWS SNS в качестве параметра сообщения.

+0

может попробовать JSON.stringify (JSON.stringify ({"test": "test"})); – Hacketo

+0

1. Это простой старый объект, а не JSON; 2. '' {"test": "test"} ''будет [JSON] (http://json.org); 3. Почему вы считаете, что вам нужно избегать цитат? 4. Просто отправьте JSON (от 2.) через POST – Andreas

+0

Если вы нашли методы для работы с текстом, просто выполните сериализацию своего объекта JSON (используя строку или что-то подобное) и выполните ваши решения в сериализованной строке JSON. –

ответ

2

Вы можете преобразовать объект JSON в формат строки первой с помощью JSON.stringify()

var temp = {"test":"test"}; 
var tempStr = JSON.stringify(temp); 
console.log(tempStr); //> {"test":"test"} 
var modifiedStr = tempStr.replace(/"/g, '\\"'); 
console.log(modifiedStr); //> {\"test\":\"test\"} 

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

var temp = {"test":'te"st'}; 
var tempObj = JSON.parse(JSON.stringify(temp)); 

for(var k in tempObj){ 
    tempObj[k]=tempObj[k].replace(/"/g, "<DOUBLE_QUOTES_4594>"); 
} 

var tempStr = JSON.stringify(tempObj); 
console.log(tempStr); //> {"test":"te<DOUBLE_QUOTES_4594>st"} 

var modifiedStr = tempStr.replace(/"|"/g, '\\"').replace(/<DOUBLE_QUOTES_4594>/g, '"'); 
console.log(modifiedStr); //> {\"test\":\"te"st\"} 
+0

не работает, если строковое значение содержит «. – Hacketo

+0

. Я не уверен, какой формат принимает AWS SNS, пожалуйста, скажите мне, знаете ли вы. – Icarus

2

Как я предложил в комментарии Вы можете перейти от Javascript object к escaped JSON с использованием JSON.stringify дважды

var myObject = {"test":"test"}; 

var myJson = JSON.stringify(myObject); // {"test":"test"} 

var myEscapedJson = JSON.stringify(myJson); // "{\"test\":\"test\"}" 
Смежные вопросы