如何解码类似 JSON 的 JavaScript 对象文字字符串

ktm*_*124 1 javascript json

我在从我认为是 JSON 的字符串数组中解码时遇到问题。

var result = [
  "{gene: 'PEX2', go_bp: '0.766500871709', CombinedPvalue: '9.999999995E-4'}",
  "{gene: 'PEX5', go_bp: '0.766472586087', CombinedPvalue: '9.999999995E-4'}",
  "{gene: 'PEX7', go_bp: '0.766386859737', CombinedPvalue: '9.999999995E-4'}"
];
Run Code Online (Sandbox Code Playgroud)

您可以看到 JavaScript 对象文字中有 3 个与基因相关的字符串,每个字符串都编码为字符串。我怎样才能解码这些?

我尝试过JSON.parse,但它给了我一个错误。

for (var i = 0; i < result.length; i++) 
    console.log(JSON.parse(result[i]));
Run Code Online (Sandbox Code Playgroud)

Uncaught SyntaxError: Unexpected token g

有简单的方法吗?

Dan*_*nez 5

由于这是有效的 javascript,因此您可以Function()通过创建匿名函数然后立即执行它来返回对象的新实例。与 的其他答案不同eval(),您不必声明变量并将对象文字分配给传递给 eval 的字符串中的该变量 - 您需要的一切都可以在一行中干净地完成。

var result = [
    "{gene: 'PEX2', go_bp: '0.766500871709', CombinedPvalue: '9.999999995E-4'}",
    "{gene: 'PEX5', go_bp: '0.766472586087', CombinedPvalue: '9.999999995E-4'}",
    "{gene: 'PEX7', go_bp: '0.766386859737', CombinedPvalue: '9.999999995E-4'}"
];

for (var i = 0; i < result.length; i++) {
    // create function that returns the obj literal
    // and call it immedieately.
    var obj = new Function( 'return ' + result[i] + ';' )();
    document.write('gene: ' + obj.gene + ' <br />');
}
Run Code Online (Sandbox Code Playgroud)