[英]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.