我希望能夠從大型json文件更新用d3製作的圖表上的數據和可視化效果。數據來自美國農業部的營養數據庫。 json文件來源於:http://ashleyw.co.uk/project/food-nutrient-database,它非常大(特別是30MB)。只需加載它是一件麻煩事。記事本++全部加載(1)行(大約一分鐘後),記事本(大約20秒)加載它(跨多行)格式不良。是否有可能有效地使用大型的Json數據庫?它會使瀏覽器崩潰還是導致某種加載滯後?如何在D3.js中使用大型Json文件
0
A
回答
2
正如我上面提到的,我的建議是預先處理JSON以刪除任何你不需要的東西。下面是Node.js中的一個示例腳本,它將讀取您正在使用的文件並吐出一個新文件,其中有很多內容被過濾掉。
在這個例子中,我忽略了除描述之外的所有領域,只包括關於維生素的信息。根數組中仍然應該有6600個元素。
從這個腳本生成的文件大約是5MB,而不是30MB
var fs = require('fs');
// open the file
fs.readFile('./foods-2011-10-03.json','utf8',function(err,data){
if (err) throw err;
var output = [];
// parse the file from a string into an object
data = JSON.parse(data);
// Loop through each element
data.forEach(function(d,i){
// spit an example element into the console for inspection:
// if (i == 0) console.log(d);
// decide which parts of the object you'd like to keep
var element = {
description : d.description,
nutrients : []
};
// for example here I'm just keeping vitamins
d.nutrients.forEach(function(d,i){
if (d.description.indexOf("Vitamin") == 0) element.nutrients.push(d);
});
output.push(element);
})
fs.writeFile('./foods-output.json', JSON.stringify(output), function(err){
if (err) throw err;
console.log('ok');
})
})
+0
請注意,如果文件較大,或者您有內存限制,您也可以考慮使用流來逐行過濾文件。在這裏看到這個答案:http://stackoverflow.com/questions/11874096/parse-large-json-file-in-nodejs –
相關問題
- 1. 在d3.js中導入json文件
- 2. d3.js外部JSON文件
- 3. 在d3.js中使用大型JSON文件導致大量的性能命中/崩潰
- 4. 在d3.js中使用動態JSON
- 5. 如何在d3.js Rails應用程序中使用json
- 6. 無法使用d3.js加載html中的json文件
- 7. 使用JSON文件,而不是在CSV d3.js餅圖
- 8. 如何更改d3.js中的json文件並使用選項更新圖表
- 9. D3.js無法加載json文件
- 10. 將json文件加載到d3.js
- 11. 如何使用d3.js
- 12. 如何爲使用D3.js
- 13. D3.js - 如何使用內聯JSON作爲D3圖表的數據集,而不是csv/tsv/json文件
- 14. 如何在.js文件中更改d3.js餅圖的代碼
- 15. CSV使用d3.js與使用d3.js
- 16. 無法使用d3.js加載外部json文件
- 17. 使用d3.js從JSON文件獲取圖形屬性
- 18. d3.js:如何訪問json文件的根節點值?
- 19. 使用Ruby過濾大型json文件
- 20. 使用D3.JS訪問JS對象中的'值'使用D3.JS
- 21. 使用d3繪製json數據in phant使用d3 js
- 22. 發送JSON文件服務器使用它在D3.js中的R
- 23. Rails 3生成JSON文件,以在JavaScript庫中使用它 - D3.js
- 24. 我們能否在JSON數據文件中添加圖像和使用D3.js
- 25. 如何在d3.js
- 26. 如何在D3.JS
- 27. D3使用URL引用時的類型錯誤mbostock.github.com/d3/d3.js
- 28. 如何使用D3中的geojson文件更改點的大小
- 29. 在C#中加載大型JSON文件
- 30. 如何在節點js中存儲大型二進制文件?
你是絕對正確的,這將導致裝載的滯後性,但據我所知它不應該崩潰任何瀏覽器。你需要所有的數據嗎?即,您是否可以預處理它以刪除您不需要的任何信息? –
我不需要所有的數據。但是,由於文件太大,我不知道如何有意剝去不需要的數據。只是以一種比較友好的閱讀格式查看它似乎是一種挑戰。我想要一個6600個對象的數組,每個對象嵌套大約75個對象。 – Yansee
如果你使用D3,我假設你的Javascript Fu很強大。我的建議是安裝Node.js(如果你還沒有)並以這種方式處理文件。這很容易做到。讓我看看我能否拿出一個例子。 –