2014-11-21 198 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