javascript - 将两个 JSON 字符串化值合并到 JSON 对象中

标签 javascript jquery json

我不确定我的标题是否正确,但我目前有一个可重复的表单,可以进行 JSON 字符串化,另一个普通输入可以进行 JSON 字符串化,因此,当单击克隆时,第二个输入会被克隆,提交时也会被克隆单击后我在控制台中得到以下值:

{"dependant1":[{"name":"daniel"}],"dependant2":[{"name":"allen"}]}
{"mainmember":[{"name":"steve"}]}

我如何将两者结合起来得到:

{"mainmember": [{"name": "steve"}],"dependant1": [{"name": "daniel"}],"dependant2": [{"name": "allen"}]}

这是一个 jsFiddle:http://jsfiddle.net/dawidvdh/uhJ7w/

和代码:

jQuery:

//Clone Tracking
var g_counter = 1;
var d_counter = 1;
var dependant = ["dependant"];
var input_groups = ["group-1"];
var group;
var name_input_groups = ["name-group-1"];
var values;
var name_fields=[0];
var name_input = "<input class='name' name='name' type='text' />";
jQuery(document).ready(function(e) {
    jQuery(name_fields).each(function() {
        jQuery(name_input).appendTo('#name-group-1');
    });
    jQuery('#clone').click(function() {
        clone_dependant();
    });

    function clone_dependant() {
        var oldId = g_counter;
        g_counter++;
        var id_newDiv = 'group-'+ g_counter;
        currentdep ='dependant-'+g_counter;
        var $clonedDiv = jQuery('#dependant-1').clone(false).attr('id', 'dependant-'+g_counter);
        var name_newDiv = 'name-group-'+ g_counter;
        $clonedDiv.find('#name-group-1').attr('id',"name-group-" + g_counter );
        $clonedDiv.find('input[type="text"]').val('');
        $clonedDiv.insertAfter("#dependant-" + oldId);
        name_input_groups.push(name_newDiv);
        input_groups.push(id_newDiv);
    }

var result = {};
var dependants;
var mainmember;
var main_result = {};
var dep_counter = 0;
jQuery('#submit').click(function(){
    jQuery('.dependant').each(function(k, v){
        dep_counter++
        dependants = {};
        result['dependant'+dep_counter] = [dependants];
        dependants['name'] = $(v).find('.name').val();
    });
    jQuery('.main-member').each(function(k, v){
        mainmember  = {}
        mainmember['name'] = $(v).find('.main_name').val();
        main_result['mainmember'] = [mainmember];
    });
    var jsonData = JSON.stringify(result);
    var mainData = JSON.stringify(main_result);

    console.log(jsonData);
    console.log(mainData);

    jQuery.ajax({
        type: "POST",
        url: "mail.php",
        dataType: "json",
        data: {parameters: jsonData}
    });
});
//submit function
});

然后是 html

<div id="main-member" class="main-member">
    <div id="label">full name:</div>                <input class="main_name" />
</div>
<div id="dependant-1" class="dependant">
    <div id="label">full name:</div>            <div id="name-group-1"></div>
</div>
<button id="clone">Add a Dependant</button>
<button id="submit">submit</button>

并且它们还必须位于自己的每个循环中才能与代码的其余部分一起工作。

提前致谢:)。

最佳答案

不要使用两个不同的变量 resultmain_result,而只能使用一个。

如果您单独需要它们,请将它们的所有属性复制到您要字符串化的新空对象上。您可以使用jQuery.extend为此:

var jsonData = JSON.stringify($.extend({}, result, main_result));

关于javascript - 将两个 JSON 字符串化值合并到 JSON 对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14366097/

相关文章:

java - 从 Rest 服务接收 excel 文件作为 JavaScript 响应

javascript - 如何在没有空回调的情况下测试多个调用

javascript - 为什么样式对动态添加的内容没有任何影响

java - ObjectMapper.readValue 可以返回空值吗?

python - 对 Pandas 数据框的深度嵌套 JSON 响应

javascript - Bootstrap 下拉菜单不适用于标准 JS 和 CSS

jquery - 选择列表中最高的图像

jQuery - 检查是否第一次点击

javascript - Accordion ui.newHeader.index() 增加 2 而不是 1

arrays - 从 JSON 数组访问特定值 swift 4