如何在javascript Google翻译中解析json字符串中未转义的单引号

时间:2017-06-14 15:19:33

标签: javascript json decode google-translate

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

例如:

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

返回

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

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

1 个答案:

答案 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);