我使用Google Apps脚本属性服务存储JSON对象,并希望使用模板化html服务将该对象作为十六进制转义的JSON字符串发送到客户端页面。
在服务器端
var str= '{ "test": "hello" }'; //how do I send a hex escaped string
var test = JSON.parse(str);
console.dir(test);
客户端页面中的预期字符串 即,客户端的str对象(查看html源代码)应读取为
var str= "{\x22test\x22: \x22hello\x22}";
var test = JSON.parse(str);
console.dir(test);
答案 0 :(得分:1)
如果您只想替换引号,可以使用像这样的简单替换
var str= '{ "test": "hello" }';
var strEscaped = str.replace(/"/g, '\\x22')
console.dir(strEscaped);
但是,这不处理值内的引号,它们也将被替换。
如果您面临的问题与传输中的编码有关,那么最好在传输之前将整个字符串转换为base64,然后再使用base64将其解码回。在JavaScript和其他大多数平台上,这样做非常容易:
var str = '{ "test": "hello" }';
var encoded = btoa(str);
console.dir('encoded:');
console.log(encoded);
console.log();
var decoded = atob(encoded);
console.log('decoded');
console.log(decoded);