【问题标题】:Merging two json (deep nested)合并两个json(深嵌套)
【发布时间】:2017-08-24 15:37:31
【问题描述】:

我尝试将两个 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"}]}]}

【问题讨论】:

    标签: jquery json ajax stringify


    【解决方案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 以获取演示。

    【讨论】:

      【解决方案2】:

      所以,如果我先合并数组然后 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"}}
      

      【讨论】:

        【解决方案3】:

        如何使用Lodash js 库来操作数组、对象……

        【讨论】:

        • 有趣。但我真的不想为此使用另一个库。我至少在正确的轨道上吗?
        猜你喜欢
        • 1970-01-01
        • 2017-12-07
        • 2014-03-02
        • 2023-01-29
        • 2021-12-26
        • 2020-10-22
        • 2012-08-31
        • 2016-03-27
        • 2017-09-25
        相关资源
        最近更新 更多