Javascript小弟初学不久.所以如下有什么大的笑话.多多见谅.
因为有时得到JSON数据后.只能处后台来推断.如果后台不是我们处理.那我们怎么来得到他的格式了.如下:
//obj为JSON格式数据 function jsonToString(obj) { var str = ""; var depth = 0; function jsonParseString(obj) { for(var p in obj){ if(Object.prototype.toString.apply(obj[p]) == "[object Array]"){ str += p +":"+"\n"; var length = obj[p].length; for(var i =0;i<length;i++){ depth++; jsonParseString(obj[p][i]); } } else{ var con = ""; for(var j= 0;j<depth;j++) con += " "; str += con + p + "=" + obj[p] + "\n"; } } depth--; } jsonParseString(obj); return str; }
传进来的是JSON格式的数据.最先我就一递归函数.但是发现结果不对(如果JSON里有数组,会得不到数组里的分析结果)主要是因为Javascript里的字符串是值传递.
所以想的是用全局变量.但是这个函数是给别的来调用的.不可能还去写个全局变量.
后利用JavaScript的闭包.来达到相应效果并不用全局变量.其中深度控制也是如此.
深度控制没有具体测试.可能如果数组里有数组.也可能数组连数组不能正确显示(这个因时间关系没有测试)
解析结果如下:呵呵,有的人可能看出来了.这个是JqGrid要求的JSON格式.