想给json数据的key值加引号,写的代码如下,    var jsonT = {
        testUn7: {
            data: "test",
            data1:"test2s"
        }
    };
    function test(obj) {
        var str = "";
        var strKeyValue="";
        for (var i in obj) {
            strKeyValue = typeof (obj[i]) == "object" ?"{"+ test(obj[i]) +"}": "'" + obj[i] + "'";
            str += "'" + i + "'" + ":" + strKeyValue + ",";
        }
        str = str.length > 0 ? str.substr(0, str.length - 1) : "";
        console.log(str);
    }预想的结果为:'testUn7':{'data':'test','data1':'test''test2s' } ,实际结果为:
'testUn7':{undefined} ,麻烦帮忙看看,问题出在哪里了,怎么改动下才能有如期效果,谢谢了。

解决方案 »

  1.   

    刚刚我把递归的抽出来了,但是代码重复了,纠结。
    function test2(obj) {
            var str = "";
            for (var i in obj) {
                strKeyValue = typeof (obj[i]) == "object" ? "{" + test2(obj[i]) + "}" : "'" + obj[i] + "'";
                str += "'" + i + "'" + ":" + strKeyValue + ",";
            }
            str = str.length > 0 ? str.substr(0, str.length - 1) : "";
            return str;
        }
        function test(obj) {
            var str = "";
            var strKeyValue="";
            for (var i in obj) {
                strKeyValue = typeof (obj[i]) == "object" ? "{" + test2(obj[i]) + "}" : "'" + obj[i] + "'";
                str += "'" + i + "'" + ":" + strKeyValue + ",";
            }
            str = str.length > 0 ? str.substr(0, str.length - 1) : "";
            console.log(str);
        }效果倒是如期的效果。有啥改进办法没