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