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+")"); 

虽然这不被推荐。