Javascript 合并JSON文件?
我发现的所有与此相关的问题都是关于组合JSON对象和/或字符串的。我正在使用一个名为“Fuse”的jQuery插件来搜索文件的内容(repo here:)。这是我目前掌握的代码Javascript 合并JSON文件?,javascript,jquery,json,Javascript,Jquery,Json,我发现的所有与此相关的问题都是关于组合JSON对象和/或字符串的。我正在使用一个名为“Fuse”的jQuery插件来搜索文件的内容(repo here:)。这是我目前掌握的代码 $.getJSON("data/bn1.json", function(data) { start(data); }); $.getJSON("data/bn2.json", function(data2) { start(data2); }); 两个JSON文件如下所示(为简洁起见,缩短): 要调用
$.getJSON("data/bn1.json", function(data) {
start(data);
});
$.getJSON("data/bn2.json", function(data2) {
start(data2);
});
两个JSON文件如下所示(为简洁起见,缩短):
要调用的最后一个JSON文件(在本例中为bn2.JSON
)是我搜索时显示的文件。我想搜索两个以上的文件(将来将是六个文件)。我的项目的完整JS文件在这里:(你也可以在那里找到我的JSON文件)
如果有人能给我指出正确的方向,我将不胜感激。您的问题归结为“如何合并数组?”您可以使用 由于您将获得多个文件,因此最好是和。未经测试,但这应该让您开始:
var urls = [
'data/bn1.json',
'data/bn2.json',
'data/bn3.json'
// etc.
];
var deferreds = [];
$.each(urls, function (index, url) {
deferreds.push($.getJSON(url)); // Request all data simultaneously
});
$.when.apply($, deferreds).then(function () { // We have all data, merge it
var data = [];
$.each(arguments, function (index, chunk) {
data = data.concat(chunk);
});
start(data); // Do whatever you want to this new collection of data
});
多亏了Brad,我想出了一个解决方案:
var allData = [];
$.getJSON("data/bn1.json", function(data) {
allData = allData.concat(data);
start(allData);
});
$.getJSON("data/bn2.json", function(data2) {
allData = allData.concat(data2);
start(allData);
});
万岁 您似乎不想搜索JSON文件。。。您似乎想要搜索对象。JSON只是一种传输格式。我们不知道您如何组合数据。你没有告诉我们这些数据是什么。我不知道我们能帮到你什么。你能把所有的文件作为JSON字符串,解析成对象,然后在本地缓存吗?您的搜索将针对这个组合的本地缓存,而不是单个文件。@kaveman我该怎么做呢?我对JSON不太熟悉,哈哈。请看下面Brad的答案-基本上就是我所说的。非常感谢你的帮助Brad!你帮我找到了一个解决方案。你要处理你的数据两次吗?为什么不按照我的回答使用jQuery promise库呢?您给出的第二个示例不适用于我的代码。我上面提到的是一个快速解决方案。我打算研究一下承诺,它们听起来是个好主意。
var urls = [
'data/bn1.json',
'data/bn2.json',
'data/bn3.json'
// etc.
];
var deferreds = [];
$.each(urls, function (index, url) {
deferreds.push($.getJSON(url)); // Request all data simultaneously
});
$.when.apply($, deferreds).then(function () { // We have all data, merge it
var data = [];
$.each(arguments, function (index, chunk) {
data = data.concat(chunk);
});
start(data); // Do whatever you want to this new collection of data
});
var allData = [];
$.getJSON("data/bn1.json", function(data) {
allData = allData.concat(data);
start(allData);
});
$.getJSON("data/bn2.json", function(data2) {
allData = allData.concat(data2);
start(allData);
});