2011-08-17 104 views

回答

3

您可以用:代替=,然後使用JSON.parse。然後你需要用"來包裝信息。

// error = not : 
JSON.parse('[{message="Hello World"}]') 

// errors = message not "message" 
JSON.parse('[{message="Hello World"}]'.replace('=',':')) 

試試這個:

var message = '[{message="Hello World"}]' 
message = message.replace('message', '"message"').replace('=',':') 
JSON.parse(message) 

您可以使用eval做同樣的:

// still gotta replace the '=' 
eval('[{message="Hello World"}]'.replace("=",":")) 

eval還有其他問題:

eval('window.alert("eval is evil")') 

所以,要小心。確保你知道你在評估什麼。

2

那就是JSON。如果你正在使用jQuery,然後

var arr = jQuery.parseJSON('[{message="Hello World"}]'); 
alert(arr[0].message); 

一種較「安全」的方法是

var arr = eval('[{message="Hello World"}]'); 

之後的常用3將是相同的jQuery版本。

但是,它應該可能是[{message:"Hello World"}]是正確的有效json。

+0

是的,我剛剛回來編輯問題,以表明它是JSON,而不是HTML。您的解決方案完美運作謝謝。 –

1

雖然這不是有效的JSON,你可以用:取代所有=,加引號鍵,然後用JSON.parse將其轉換:

//text = '[{message="Hello World"}]' 
text = text.replace(/(\w+)\s*=/g, "\"$1\":"); 
var array = JSON.parse(text); 

如果JSON.parse不支持,你可以使用eval

//text = '[{message="Hello World"}]' 
text = text.replace(/(\w+)\s*=/g, "\"$1\":"); 
var array = eval("("+text+")"); 

雖然這不被推薦。