2014-11-21 195 views
-2

正在嘗試以下字符串值轉換爲JavaScript對象 例將字符串轉換爲JavaScript對象

string="name=usernamex&gender=boy&age=10&version_obj=1" 

var user={ name:'username', gender:'boy',age:10,version_obj=1} 

有人可以幫助我走出

+0

http://nodejs.org/api/querystring.html – gvk 2014-11-21 21:35:04

回答

4

看起來像你想要querystring模塊:http://nodejs.org/api/querystring.html

querystring.parse('foo=bar&baz=qux&baz=quux&corge') 
// { foo: 'bar', baz: ['qux', 'quux'], corge: '' } 
+0

有任何方式做到這一點沒有節點? 編輯:沒關係,這是回答下面 – 2014-11-21 21:38:11

+1

@JeremyW - 當然,有很多方法,請參閱下面的原始JS版本的plbsam的答案。但是如果你已經使用了節點,就像OP的標籤所表明的那樣,這是簡單的方法。 – nrabinowitz 2014-11-21 21:41:26

+0

同意,容易和可讀。 – 2014-11-21 21:42:37

1

與純JavaScript ..

var str="name=usernamex&gender=boy&age=10&version_obj=1"; 
var array = str.split('&'); 
var obj = {}; 
array.forEach(function(value){ 
    var x = value.split('='); 
    obj[x[0]] = decodeURIComponent(x[1]); 
}); 
console.log(obj); 
+0

你的腳本沒有正確處理URI編碼值 – 2014-11-21 21:47:03

+0

你能舉個例子嗎? @JonathanGray – 2014-11-21 21:49:40

+1

name = usernamex&gender = boy&age = 10&version%20obj = 1 – 2014-11-21 21:50:59

0

如果你不想使用一個模塊:

var strArr = string.split("&"); 
var user = {}, i = 0, n; 
while(i<strArr.length) { 
    n = strArr[i].split("="); 
    if(n.length == 2) 
    user[decodeURIComponent(n[0])] 
     = decodeURIComponent(n[1]); 
    i++; 
    } 
+0

*僅用於示例,不適用於生產環境。 – 2014-11-21 22:21:06