首页 > javascript数组转化为json

javascript数组转化为json

有这样一个URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中,如{a:’1′, b:’2′, c:”, d:’xxx’, e:undefined}。
求解。
修正下,如果以key-value形式返回到一个json结构中,准确的返回值应该是:
{"a":"1","b":"2","c":"","d":"xxx"}


方法

function getParamsObject(url) {
    var params = url.replace(/^.*\?|#.*$/g, "");
    var obj = {}
    params.split("&").forEach(function(pair) {
        pair = decodeURIComponent(pair);
        var m = pair.match(/^(.*?)(?:=(.*))?$/);
        var key = m[1];
        var value = m[2];
        if (typeof value === "undefined") {
            return;
        }
        if (obj.hasOwnProperty(key)) {
            var v = obj[key];
            if (Array.isArray(v)) {
                v.push(value);
            } else {
                obj[key] = [v, value];
            }
        } else {
            obj[key] = value;
        }
    });
    
    return obj;
}

测试1

getParamsObject("http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e");

得到

{
    "a": "1",
    "b": "2",
    "c": "",
    "d": "xxx"
}

测试2

getParamsObject("http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e&a=more");

得到

{
    "a": [
        "1",
        "more"
    ],
    "b": "2",
    "c": "",
    "d": "xxx"
}

    //传入Url输出Json字符串
    function getUrlVars(href)
    {
        var obj = {},hash;
        var hashes = href.slice(href.indexOf('?') + 1).split('&');
        for (var i = 0; i < hashes.length; i++) {
        hash = hashes[i].split('=');
        obj[hash[0]]=hash[1];
        };
        var result = JSON.stringify(obj);
        return result;
    }
    //测试
    var href= 'http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e=';
    var jsonStr = getUrlVars(href);
    console.log(jsonStr); 
    //{"a":"1","b":"2","c":"","d":"xxx","e":""}

    function parseQueryString(url) {
        var search = '';
        var obj = {};
        var arr = [];
        var name = '';
        var value = '';
        if (url.indexOf('?') == -1) {
            return null;
        }
        search = url.substr(url.indexOf('?')+1);
        arr = search.split('&');
        for (var i = 0, len = arr.length; i < len; i++) {
            name = decodeURIComponent(arr[i].split('=')[0]);
            value = decodeURIComponent(arr[i].split('=')[1]);
            obj[name] = value;
        }
        return obj;
    }

var url = window.location.search.substr(1).split("&")
var jsonData ={}
for(var i=0,len=url.length;i<len;i++){
    jsonData[url[i].split("=")[0]]=url[0].split("=")[1]
}

var json = '';

window.location.search.substr(1).split("&").forEach(function (element, index, array) {
  var json_tmp = element.split("=");
  json += '"'+ decodeURIComponent(json_tmp[0]) +'":"'+ decodeURIComponent(json_tmp[1]) +'",'
});

console.log('{' + json + '}');

使用$.param()
http://api.jquery.com/jQuery.param/

使用方法如下

var data = { one: 'first', two: 'second' };
var result = $.param(data);
// result one=first&two=second
【热门文章】
【热门文章】