我正在调用谷歌翻译API并获取未完全解码的字符串。特别是,我看到“单引号应该在哪里。
例如:
{
"q": "det är fullt",
"target": "en"
}
返回
{
"data": {
"translations": [
{
"translatedText": "It&\#39;s full",
"detectedSourceLanguage": "sv"
}
]
}
}
我本来期望 JSON.parse 能够解决这个问题,但事实并非如此。我还需要调用其他一些 native 函数吗?我当前的修复方法是使用正则表达式 .replace(/'/g, "'");
来修复此问题,但是有没有更好的方法来使用 javascript 解码此类内容?
最佳答案
啊哈!导致此问题的原因是响应是 HTML 编码的。
如果我将翻译直接放到页面上,引用就会呈现得很好。但是,我将结果放在文本区域中,以便用户有机会编辑该翻译。因此,浏览器不会自动将字符串读取为 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);
关于javascript - 如何从 javascript 中的 json 字符串解析出未转义的单引号 ' Google Translate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44548734/