项目中有一个通用的类负责将对象转换为JSON字符串以供AJAX调用
之前项目未采用jQuery,一直以JavaScript的eval()来解析JSON字符串
但最近ADMIN模块开始采用jQuery-1.4.2,却发现jQuery.parseJSON解析不了之前的字符串
以eval()解析时,JSON字符串必须以括号括起来
而以jQuery.parseJSON解析时最外层不能有括号
请问JSON的标准写法要不要带括号?
个人理解应该是不需要带括号吧,为什么eval()解析时必须带?(而且各浏览器表现一致)
- HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html> <head> <title>Test</title> <script type="text/javascript" src="jquery-1.4.2.js"></script> <script type="text/javascript"> $(function() { var txt1 = "({\"list\":[{\"id\":\"1000000001\", \"name\":\"Stephen\"},{\"id\":\"1000000002\", \"name\":\"Clare\"}], \"returnCode\":\"000000\", \"message\":\"成功\"})"; try { var json = eval(txt1); $("#msg").append("<p>eval解析带括号Json成功:"+json.returnCode+"</p>"); } catch(e) { $("#msg").append("<p>eval解析带括号Json出错</p>"); } try { var json = $.parseJSON(txt1); $("#msg").append("<p>jQuery解析带括号Json成功:"+json.returnCode+"</p>"); } catch(e) { $("#msg").append("<p>jQuery解析带括号Json出错</p>"); } var txt2 = "{\"list\":[{\"id\":\"1000000001\", \"name\":\"Stephen\"},{\"id\":\"1000000002\", \"name\":\"Clare\"}], \"returnCode\":\"000000\", \"message\":\"成功\"}"; try { var json = eval(txt2); $("#msg").append("<p>eval解析不带括号Json成功:"+json.returnCode+"</p>"); } catch(e) { $("#msg").append("<p>eval解析不带括号Json出错</p>"); } try { var json = $.parseJSON(txt2); $("#msg").append("<p>jQuery解析不带括号Json成功:"+json.returnCode+"</p>"); } catch(e) { $("#msg").append("<p>jQuery解析不带括号Json出错</p>"); } }); </script> </head> <body> <div id="msg"></div> </body></html>
------解决方案--------------------------------------------------------
标准的是要带括号的
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
不带小括号的话,JS把JSON的内容当做一个JavaScript对象来处理。 个人理解是这样。因为不带小括号的JSON就是一个JavaScript对象形式(有属性,有值)。
------解决方案--------------------------------------------------------
正准备学习中~
------解决方案--------------------------------------------------------
用单引号嘛。。
------解决方案--------------------------------------------------------
晕死,这个还用问?
那是eval这个函数的问题,和json无关,你应该查eval()而不是去查json!
------解决方案--------------------------------------------------------
学习,没仔细研究过
------解决方案--------------------------------------------------------