如何将JSON数组转换为单个JSON字符串?

时间:2016-02-03 11:11:52

标签: javascript jquery

我有一个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);

4 个答案:

答案 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;
&#13;
&#13;

答案 3 :(得分:0)

如果收到字符串,请执行以下操作:

var myNewJson =  JSON.parse(your_string);

但是,我看到你正在一个独特的对象中转换一个对象数组。你想要的吗?你可以使用.reduce()。更多信息Array.prototype.reduce()