json字符转对象之new Function('return ' + str)
var jsonStr = '{"id":1,"name":"linda","hobbies":[{"id":1,"name":"hobby1"},{"id":2,"name":"hobby2"}]}'; var obj1 = eval('('+ jsonStr +')'); var obj2 = (new Function('return ' + jsonStr))(); alert(obj1.name); //linda alert(obj2.name); //linda
两种方法均可,效率差不多(eval略快于new Function()),但在firefox3下,发现eval远慢于new Function() -- 禁用firebug后,eval的速度大幅提升。
通常,我们不建议使用eval(),所以,请使用new Function()的方式将json字符串转成对象吧