解析Json的格式.

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格式.
posted @ 2010-02-03 14:01  天天不在  阅读(1302)  评论(0编辑  收藏  举报