如何从 javascript Google 中的 json 字符串中解析出未转义的单引号 '

How to parse out unescaped single quote ' from json string in javascript Google Translate

我正在调用 google 翻译 api 并取回未完全解码的字符串。特别是,我看到 '单引号应该在哪里。

例如:

{
  "q": "det är fullt",
  "target": "en"
}

Returns

{
   "data": {
      "translations": [
       {
        "translatedText": "It&\#39;s full",
        "detectedSourceLanguage": "sv"
      }
    ]
  }
}

我原以为 JSON.parse 会解决这个问题,但事实并非如此。我需要调用其他一些本机函数吗?我目前的解决方法是使用正则表达式 .replace(/'/g, "'"); 来解决这个问题,但是有没有更好的方法来使用 javascript 来解码这种类型的东西?

啊哈!问题是因为响应是 HTML 编码的。

如果我将翻译直接放到页面上,引文呈现得很好。但是,我将结果放在文本区域中,让用户有机会编辑该翻译。因此,浏览器不会自动将字符串读取为 HTML,因为它不会直接呈现为 HTML.

我现在使用的解决方案是使用 DOMParser 解码字符串,如 on this Whosebug 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);