我有一个对象:
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}"
我需要所有双引号都用\
转义提前感谢提供的解决方案!
答案 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!!!');
}
当您记录转义字符串的结果时,您不会在控制台中看到转义字符。