2016-03-04 42 views
0

我如何可以改變一個查詢字符串像var1=5&var2=stackoverflow&var3=blah以JSON對象像從查詢字符串,以JSON在JavaScript

{ 
    "var1": "5", 
    "var2": "stackoverflow", 
    "var3": "blah" 
} 

我下面this,但看起來像我錯過了一些東西......我也可以使用jQuery,如果需要的話。

+0

似乎究竟是如何將教程代碼不適合你的工作? – IceFire

+0

看起來像它的返回一個數組裏面的對象,但我只需要 – Napolux

+0

你有沒有解決這個問題的對象?我的建議能夠幫助你嗎? – scniro

回答

3

我做一個手動解決解析對象本身...

AjaxForm.prototype.getData = function() { 
    var data = this.$element.serializeArray(); 
    var object = {}; 

    for (var i = 0; i < data.length; i++) { 
     object[data[i].name] = data[i].value; 
    } 

    return JSON.stringify(object); 
}; 
+0

你可以創建一個小提琴來演示這個工作嗎?我不明白你在做什麼 - 你如何解析查詢字符串? – scniro

0

您可以按照this

$(function(){ 

    // Values are not coerced. 
    var params = $.deparam.querystring(); 

    debug.log('not coerced', params); 
    $('#deparam_string').text(JSON.stringify(params, null, 2)); 

    // Values are coerced. 
    params = $.deparam.querystring(true); 

    debug.log('coerced', params); 
    $('#deparam_coerced').text(JSON.stringify(params, null, 2)); 

    // Highlight the current sample query string link 
    var qs = $.param.querystring(); 

    $('li a').each(function(){ 
    if ($(this).attr('href') === '?' + qs) { 
     $(this).addClass('current'); 
    } 
    }); 

}); 
2

不知道在這一點上,你與中提到的教程中掙扎,因爲你沒有提供你的片段,但檢查文章的時候,我能夠充分手藝爲你工作的例子(在評論中有一些改進建議)。遵守以下...

function QueryStringToJSON(str) { 
    var pairs = str.split('&'); 
    var result = {}; 
    pairs.forEach(function (pair) { 
     pair = pair.split('='); 
     var name = pair[0] 
     var value = pair[1] 
     if (name.length) 
      if (result[name] !== undefined) { 
       if (!result[name].push) { 
        result[name] = [result[name]]; 
       } 
       result[name].push(value || ''); 
      } else { 
       result[name] = value || ''; 
      } 
    }); 
    return (result); 
} 

var string = 'var1=5&var2=stackoverflow&var3=blah'; 
var obj = QueryStringToJSON(string); 

console.log(obj) // {var1: "5", var2: "stackoverflow", var3: "blah"} 

JSFiddle Link - 工作演示


網絡將指向你jQuery BBQ: $.deparam如在某一點的方法來此上搜索周圍。這是偉大的,可能有點更強大的,但你應該能夠逃脫上面的代碼中第一個,特別是如果你想要一個香草的解決方案(你總是應該!)

+0

你可以修改最後一行爲'return(JSON.stringify(result));'這會給出完美的JSON字符串。現在它返回一個Object將不會在console.log()中打印。 – Amrit

0

你可以這樣做。

var query="var1=5&var2=stackoverflow&var3=blah"; 
var arr=query.split("&"); 
result={}; 
for(i=0;i<arr.length;i++) { 
    k = arr[i].split('='); 
    result[k[0]] = (k[1] || ''); 
}; 
console.log(result); 

所以在這裏我在做什麼使用 「&」 1)拆分查詢。你會得到數組爲[「var1 = 5」,....];

2)數組的每個元素再一次分裂超過 「=」。

3)取密鑰作爲改編[0]和值作爲改編[1],如果沒有值,則「」。

注:這是decodeed URI。如果URI被編碼,首先使用decodeURIComponent()函數對其進行解碼。