刚刚在w3c的json学习中发现了一个天坑,按照上面的demo自己写了一下,竟然报错了
测试了许久才发现原来是格式问题
json格式写为:var data='{"name":"1","val":"西安“}‘就不会报错,
但是如果为了可读性更好一点写成
var data = '{"root":
[
{"name":"1","val":"西安"},
{"name":"2","val":"铜川"}
]}';
这样在用eval()函数解析的时候就会报错,因为eval()函数把其中的换行还有空格也解析出来了,
这样结果就不是json对象了,所以千万不要为了格式好看而更改json格式。
但是w3c格式写成那样为什么不把这个问题交代清楚,害的我纠结了老半天T_T,希望刚开始接触json的同学不要再被骗了。
下面说一下两种解析json字符串的方法:
方法一:
比较通用的eval()函数,这个就不多说了
方法二:
第二种解析方式就是使用Function对象来完成,它的典型应用就是在JQUERY中的AJAX方法下的success等对于返回数据data的解析
var json='{"name":"CJ","age":18}';
data =(new Function("","return "+json))();
此时的data就是一个会解析成一个 json对象了.