合并两个json(深嵌套)

时间:2017-03-30 15:43:48

标签: jquery json ajax stringify

我尝试将两个json合并到$.extend$.merge但没有成功。我也试着像这样附上它:

data: JSON.stringify({"data" : [
    {term: request.term},
    jsontag
]}),

这是我的设置:

autocomplete: ({
    source: function (request, response) {
        var tags = $('#input-newsearch-2').val();
        var jsonfied = {
            tags: tags.replace(/,$/, "").split(",").map(function (tag) {
                return { tag: tag };
            })
        };
        var jsontag = JSON.stringify(jsonfied);
        var jsonterm = JSON.stringify({ term: request.term });
    //console.log(jsontag);
    //console.log(jsonterm);
    //var mergedObj = $.extend(jsontag, jsonterm); 
    //console.log(mergedObj);          
    $.ajax({
        url: "/source",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: [jsontag, jsonterm],
        success: function (data) {
            response(data);
        }
    });
},
});

控制台:

{"tags":[{"tag":"value01"},{"tag":"value02"},{"tag":"value03"}]}  
{"term":"value04"}

我希望得到某样的信息:

[{"term":"value04"},{"tags":[{"tag":"value01"},{"tag":"value02"},{"tag":"value03"}]}]

甚至更好:

{"data":[{"term":"value04"},{"tags":[{"tag":"value01"},{"tag":"value02"},{"tag":"value03"}]}]}

3 个答案:

答案 0 :(得分:1)

你可以简单地做到这一点,实现你想要的目标。

const mergedJSON = {data: []};

mergedJSON.data.push(jsonterm);    
mergedJSON.data.push(jsontag);

console.log(JSON.stringify(mergedJSON));

输出将是

{"data":[{"term":"value04"},{"tags":[{"tag":"value01"},{"tag":"value02"},{"tag":"value03"}]}]}

适合您的更好的方案。请查看此jsFiddle以获取演示。

答案 1 :(得分:0)

如何使用Lodash js库来操作数组,对象......

答案 2 :(得分:0)

所以似乎有用的是如果我首先合并数组然后JSON.stringify()它......就像..

        var jsontag = { data };

        var jsonterm = {};
        jsonterm['terms'] = { term: request.term };

        console.log(jsontag);
        console.log(jsonterm);
        var mergedJSON = JSON.stringify($.extend(true, jsontag, jsonterm)); 
        console.log(mergedJSON);

JSON结果:

{"data":{"tags":[{"tag":"value04"},{"tag":"value03"},{"tag":"value02"}]},"terms":{"term":"value01"}}