合并两个json(深层嵌套) [英] Merging two json (deep nested)

查看:567
本文介绍了合并两个json(深层嵌套)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试将两个json分别与$.extend$.merge合并,但是没有成功.我还尝试将其附加为:

I tried to merge two json both with $.extend and $.merge but no success. I also tried to attach it like this:

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"}]}]}

推荐答案

您可以简单地做到这一点,并实现您想要的目标.

You can simply do this, and achieve what you desire.

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 进行演示.

Which fits your even better scenario. Check this jsFiddle for demo.

这篇关于合并两个json(深层嵌套)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆