js解析Json字符串的方法

要把一个xml字符串转(“1,2,3,4,5,6,7,8,1,2”)换成数组的形式,每个值都应该是number类型的,想当然的就用了split方法,结果。。。问题来了,服务器要求数组的值是数字,而split是字符方法,所产生的数组也是字符串,麻烦来了。。这么大的数据量总不能一个一个的for循环parseInt吧,想想就头痛!

天无绝人之路,原来js这么强大,有很多方法可以解决,只不过是我之前不知道而已,这里总结下,并简单的区分下优劣:

一、eval

eval()可以动态解析和执行字符串,它直接把字符串当做Javascript代码执行,我们可以利用这个特性用来进行JSON数据的解析

不过由于eval可以解析任何字符串,所以是不安全的

1. eval

1
2
var arrstr ="["+"1,2,3,4,5"+"]";
eval(arrstr);

//eval方法是js的全局方法,接收字符串,返回字符串的值并执行其中的代码。

2. new Function

new Function(arg1, arg2, ...argN, function_body);

new Function可以动态解析和执行字符串,所以可以利用其构造一个自执行函数来进行JSON字符串的解析

1
2
var arr = new Function("return "+arrstr)();
alert(arr);

//通过alert可以看出arr输出[1,2,3,4,5],通过创建匿名函数并执行的方法将字符串转换成数组,完成字符解析,该方法只接受字符串。

缺点:使用new Function会创建一个本地对象,导致内存无法进行释放,如果解析的字符串内容过多,就有可能导致很多内存在解析完成后无法释放

3.native

1
2
var arr=JSON.parse(arrstr);
alert(arr);

//JSON.parse方法是浏览器的原生方法,目前在chrome,firefox 3.6+,IE 8+,safari 5+,opera都具有良好的支持,是上述几种方法中执行效率最高的方法。

 几种方法的执行效率比较如下,firefox如果把firebug等addon都去掉的话eval效率会高很多,下图是一个比较老的比较结果,现在的chrome浏览器,safari浏览器,opera,firefox,ie都已经支持了JSON.parse方法:

通常情况下尽量避免使用eval方法和new Function方法,推荐使用JSON原生方法,如果必须要使用eval和new Function二选一的话,那就使用new Function方法。

 

posted @   想旅游咯  阅读(2620)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示
上海
18:47发布
上海
18:47发布
5°
南风
1级
空气质量
相对湿度
71%
今天
多云
5°/13°
周六
小雨
6°/14°
周日
小雨 / 多云
9°/14°