簡體   English   中英

如何解碼類似JSON的JavaScript對象文字字符串

[英]How to decode JSON-like JavaScript Object Literal Strings

我無法從我認為是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'}"
];

您會看到,有3個與基因相關的JavaScript對象文字字符串,每個都編碼為字符串。 我該如何解碼?

我嘗試了JSON.parse但它給了我一個錯誤。

for (var i = 0; i < result.length; i++) 
    console.log(JSON.parse(result[i]));

Uncaught SyntaxError: Unexpected token g

有沒有簡單的方法?

您擁有的不是JSON,而是文本形式的Javascript對象。 您可以使用eval()將它們轉換為Javascript對象:

  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'}" ]; var f; for (var i = 0; i < result.length; i++) { eval("f = "+result[i]); console.log(f.gene); } 

注意:通常認為eval是邪惡的。 在這種情況下,如果您完全確定源數組將僅保存數據而沒有代碼,則這是足夠安全的。

由於這是有效的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 />'); } 

JSON格式需要在屬性名稱兩邊加上雙引號。 您的樣本數據缺少這些引號,並且這不是有效的JSON。

它還需要雙引號,而不是單引號。

嘗試這樣的事情:

   '{"gene": "PEX2", "go_bp": "0.766500871709", "CombinedPvalue": "9.999999995E-4"}',

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM