日期:2014-05-16  浏览次数:20529 次

从jquery的parseJSON方法了解JSON格式规范

最近做一个控件jqGrid,这个表格控件从后台获取数据使用的是jquery的.ajax()方法。

我在后台返回一组字符串:

?

"{"total":100,"rows":[{"cell":['0','电影_0'],"id":"0"},{"cell":['1','电影_1'],"id":"1"},{"cell":['2','电影_2'],"id":"2"},{"cell":['3','电影_3'],"id":"3"},{"cell":['4','电影_4'],"id":"4"},{"cell":['5','电影_5'],"id":"5"},{"cell":['6','电影_6'],"id":"6"},{"cell":['7','电影_7'],"id":"7"},{"cell":['8','电影_8'],"id":"8"},{"cell":['9','电影_9'],"id":"9"}],"records":"10","page":"1"}"

?

?

后,死活在前端显示不出来。

后来发现是发生了解析错误。

在jquery的回调方法中执行了parseJSON去解析字符串。

该方法的先把我的JSON字符串替换成了:

?

"{]:],]{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]}],]:],]:]}"
?

?最后去json官网才发现规定了json里面的字符串必须要用双引号:

?

json.org 写道
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
?

而我在"cell"的array里面的字符串用了单引号,所以发生了问题。可是在浏览器端直接eval我的那段json是没问题的。看来还是要规范点好。

1 楼 yatou_0209 2012-02-23  
我也遇到这个问题,可以帮忙解决下吗。。