合并两个json(深嵌套)

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

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

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

那么使用Lodash js库来操作数组,对象,……

所以看起来有用的是如果我首先合并数组然后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"}}