用反斜杠转义双引号

时间:2020-01-10 08:48:30

标签: javascript

我有一个对象:

const ratingSettings = {performer: true, chiefEngineer: true, engineer: true, customer: true}

我想将其转换为类似GraphQL的字符串,就像用反斜杠将所有双引号转义一样:

"{\"performer\":true,\"chiefEngineer\":true,\"engineer\":true,\"customer\":true}"

我尝试了以下操作:

const ratingSettings = JSON.stringify({performer: true, chiefEngineer: true, engineer: true, customer: true})

const getMutationObject = data => Object.keys(data).map(key => `${key}: "${data[key]}"`).join(' ')

const userData = getMutationObject(ratingSettings);

但是我没有得到我所需要的:

"{"performer":true,"chiefEngineer":true,"engineer":true,"customer":true}"

我需要所有双引号都用\

转义

提前感谢提供的解决方案!

4 个答案:

答案 0 :(得分:2)

JSON.stringify对象,然后使用.replace将所有"替换为\\"

const ratingSettings = {performer: true, chiefEngineer: true, engineer: true, customer: true}
const escapedJSON = JSON.stringify(ratingSettings)
  .replace(/"/g, '\\"');
console.log(escapedJSON);

答案 1 :(得分:2)

但是我没有得到我所需要的:

"{"performer":true,"chiefEngineer":true,"engineer":true,"customer":true}"

那不是你所拥有的。它是GUI中的一种表示形式,它显示您有一个包含"的字符串(因此在外部带有{"performer":true,"chiefEngineer":true,"engineer":true,"customer":true})。外部引号根本不是值的一部分。

要在转义其中所有"的同时用"包裹已经拥有的字符串:使用JSON.stringify 再次

const ratingSettings = JSON.stringify(JSON.stringify({performer: true, chiefEngineer: true, engineer: true, customer: true}))

答案 2 :(得分:-1)

const string = JSON.stringify(object);
const escaped = string.replace(/"/g, '\"');

答案 3 :(得分:-1)

JSON.stringify应该为您产生所需的结果。

    const expectedResult = "{\"performer\":true,\"chiefEngineer\":true,\"engineer\":true,\"customer\":true}";
    const result = JSON.stringify({performer: true, chiefEngineer: true, engineer: true, customer: true});
    
    if(result === expectedResult) {
    	console.log('You are doing it right!!!');
    }

当您记录转义字符串的结果时,您不会在控制台中看到转义字符。