我有一个jQuery函数,它返回以下字符串
[{"email":"test@gmail.com"},{"password":"test"}]
我希望将其转换为此
{"email":"test@gmail.com","password":"test*"}
这是我目前正在使用的代码。
var obj = $.map(inputs, function (x, y) {
var ret = {};
ret[x.name] = $(x).val();
return ret;
});
var jsonData = JSON.stringify(obj);
答案 0 :(得分:3)
var inputs = [{"email":"test@gmail.com"},{"password":"test"}];
var obj = {};
$.each(inputs, function(index, item) {
$.extend(obj, item);
});
答案 1 :(得分:0)
将其更改为
var obj = {}
$.map(inputs, function (x, y) {
obj [x.name] = $(x).val();
});
var jsonData = JSON.stringify(obj);
var obj = $.map(inputs, function (x, y) {
var ret = {};
ret[x.name] = $(x).val();
return ret;
});
只是因为您每次创建一个新对象var ret = {};
并仅为其设置一个值,然后将其推送到数组ret[x.name] = $(x).val();
。然后,您将返回此数组return ret;
,它将成为obj
。
因此,您的对象obj
基本上是一个对象数组ret
,它只有一个键x.name
和值$(x).val()
。
通过将代码更改为我给出的代码,您将能够获得一个对象(您打算实现)而不是数组(您想要转换为对象)。
答案 2 :(得分:0)
您可以使用:
var obj = {};
$('input').each(function(){
obj[this.type] = this.value
});
$('pre').html(JSON.stringify(obj));

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='email' value='test@test.com'><br>
<input type='password' value='123456'><br>
<pre></pre>
&#13;
答案 3 :(得分:0)
如果收到字符串,请执行以下操作:
var myNewJson = JSON.parse(your_string);
但是,我看到你正在一个独特的对象中转换一个对象数组。你想要的吗?你可以使用.reduce()。更多信息Array.prototype.reduce()