javascript,字符串/对象操作的例外

javascript,字符串/对象操作的例外,javascript,Javascript,所以,我必须使用函数来将字符串转换为对象,将对象转换为字符串,但是我需要考虑一个except,我不确定如何转换。让我给你看看我有什么 parseObjectToUrl: function (obj){ var myStr = ""; var first_iteration = true; for (var p in obj) { if(first_iteration){

所以,我必须使用函数来将字符串转换为对象,将对象转换为字符串,但是我需要考虑一个except,我不确定如何转换。让我给你看看我有什么

     parseObjectToUrl: function (obj){
            var myStr = "";
            var first_iteration = true;
            for (var p in obj) {

                if(first_iteration){
                    myStr += p + "=";
                   first_iteration = false; 
                }else{
                    myStr += "&" + p + "=";
                }

                tObj = obj[p];
                var first_inner = true;
                 for(t in tObj){
                    if(first_inner){
                        myStr +=  t;   
                        first_inner = false;
                      }else{
                        myStr += "," + t; 
                      }

                        yObj = tObj[t];
                       for( y in yObj){
                            myStr += "/" + yObj[y];
                       }
                 }
            }
           return myStr;
       },
       parseObjectFromUrl : function(url){
            var builtObj = {};
            //remove first slash
            url = url.slice(0, 0) + url.slice(1);
            var ch = url.split('&');
            var tempParent = {};
            for (var p in ch) {

                var tempSub = {};
                var arr = ch[p].split('=');
                var keyParent = arr[0];
                var splitInside = arr[1].split(",");

                for (var i in splitInside) {
                    var sub = splitInside[i].split('/');
                    var subKey = sub[0];
                    tempSub[subKey] = sub.slice(1);

                } 
                tempParent[keyParent] = tempSub;
            }
            return tempParent
        }
所以这些线看起来像

 /module1=mod1/2/3/4,mod2/2/3/4&module2=mod2/3/4/5
myObj = 
{ 
 module1 : { mod1 : [2,3,4] , mod2 [2,3,4]} ,
module2 : { mod2 : [3,4,5]} 
这个物体看起来像

 /module1=mod1/2/3/4,mod2/2/3/4&module2=mod2/3/4/5
myObj = 
{ 
 module1 : { mod1 : [2,3,4] , mod2 [2,3,4]} ,
module2 : { mod2 : [3,4,5]} 
}

因此,这些函数对我来说很好,但我(不幸)需要能够处理用户在选项中添加“/”的情况,如-

 myObj = 
{ 
 module1 : { mod1 : [2/,3/,4/] , mod2 [2,3,4]} ,
module2 : { mod2 : [3,4,5]} 
}

我肯定它会对我的函数造成影响,因为我正在按“/”进行拆分,所以我不知道如何绕过这个问题。我能逃脱刀砍吗?如果是这样的话,这将如何适应功能?正在寻找有关此问题的任何建议。谢谢

编辑:

我能够对转义url进行如下编码:

 obj.replace(/([/-])/g, "%2F");
对于一个转义的url,无论我在做相反的事情时遇到什么困难。这是我的尝试

 obj.replace(/(%2F)/g, "/");

在我看来,最好使用url数组,但请记住url的字符可能会受到限制:

说了这么一句话,我们可以这样做:

module1[]=1&module1[]=2&module2[]=4&module2[]=3
这等于以下伪代码:

$_GET["module1"] = array(1,2);
$_GET["module2"] = array(4,3);
并将encodeURIComponent和decodUriComponent用于您的值


“将字符串转换为对象并将对象转换为字符串的函数”-用于什么目的?你最终想用这个达到什么目的?你想在这里创建一个“穷人的JSON”吗…?@CBroe一个自定义路由系统,通过url保存一个状态,这样用户可以复制/粘贴/标记url,从而在多个单独的模块(角度)之间保存状态。你可以试着用url编码斜杠,我想…@CBroe这就是最终的效果,谢谢你的建议!我仍在尝试“解码”它。urlencode和URLEDECODE如何: