我正在调用google translate api并找回未完全解码的字符串。特别是,我看到'单引号应该在哪里。
例如:
{
"q": "det är fullt",
"target": "en"
}
返回
{
"data": {
"translations": [
{
"translatedText": "It&\#39;s full",
"detectedSourceLanguage": "sv"
}
]
}
}
我原本希望JSON.parse能够解决这个问题,但事实并非如此。我需要调用其他一些本机函数吗?我目前的修复方法是使用正则表达式.replace(/'/g, "'");
修复此问题,但有没有更好的方法使用javascript解码此类事物?
答案 0 :(得分:1)
啊哈!导致该问题是因为响应是HTML编码的。
如果我直接将翻译放到页面上,引用就可以了。但是,我将结果放在textarea中,以便用户有机会编辑该翻译。因此,浏览器不会自动将字符串作为HTML读取,因为它不会直接以HTML格式呈现。
我现在使用的解决方案是使用DOMParser解码字符串,如on this stackoverflow thread所述:
var encodedStr = 'hello & world';
var parser = new DOMParser;
var dom = parser.parseFromString(
'<!doctype html><body>' + encodedStr,
'text/html');
var decodedString = dom.body.textContent;
console.log(decodedString);