How can I convert query string or JSON object map to single JSON object with jQuery?

后端 未结 5 774
忘掉有多难
忘掉有多难 2020-12-09 14:13

For this example, assume that I have a list of months in a form, each with a checkbox next to them. I\'m looking for help on doing either of two things:

  1. Conver
5条回答
  •  星月不相逢
    2020-12-09 14:32

    You can try this

    String.prototype.QueryStringToJSON = function () {
    href = this;
    qStr = href.replace(/(.*?\?)/, '');
    qArr = qStr.split('&');
    stack = {};
    for (var i in qArr) {
        var a = qArr[i].split('=');
        var name = a[0],
            value = isNaN(a[1]) ? a[1] : parseFloat(a[1]);
        if (name.match(/(.*?)\[(.*?)]/)) {
            name = RegExp.$1;
            name2 = RegExp.$2;
            //alert(RegExp.$2)
            if (name2) {
                if (!(name in stack)) {
                    stack[name] = {};
                }
                stack[name][name2] = value;
            } else {
                if (!(name in stack)) {
                    stack[name] = [];
                }
                stack[name].push(value);
            }
        } else {
            stack[name] = value;
        }
    }
    return stack;
    }
    

    Query String

        href="j.html?name=nayan&age=29&salary=20000&interest[]=php&interest[]=jquery&interest[1]=python&interest[2]=Csharp&fan[friend]=rangan&fan[family]=sujan&sports[1]=cricket&sports[2]=football";
    

    usage

    alert(href.QueryStringToJSON().toSource())
    

    output

    ({name:"nayan", age:29, salary:20000, interest:["php", "python", "Csharp"], fan:{friend:"rangan", family:"sujan"}, sports:{1:"cricket", 2:"football"}})
    

提交回复
热议问题