Nodejs處理Json文件並將處理後的數據寫入新文件中
處理Json文件並將處理後的數據寫入新文件
問題描述
事情是這樣的,朋友讓我處理一個json文件並將處理後的數據寫入新文件。這個json文件的結構如下:
[ { "head_img": "http://wx.qlogo.cn/mmhead/xxxxxxxxxxx", "nick_name": "xxxxxxx", "user_name": "", "wxid": "wxid_xxxxxxxxxxxx" }, ... ]
這個json文件中的這個json數組大小是25w條數據,現在他隻想要wxid這個屬性的值,並且將它寫出到一個txt的文件中,沒5000個為一個txt文件,每個值為一行。也就是最後給他50個txt文件,每個裡面有5000行wxid的值。
實現過程
解決問題的方法有很多,可以用python、nodejs、Java等任何你熟悉的語言實現,我這裡使用nodejs來實現一下,因為它簡單並且不需要引入第三方的庫。
這裡涉及到瞭文件的讀取和寫入,因此用到nodejs自帶的fs模塊。具體實現代碼如下:
const fs = require("fs") //引入fs模塊 const data = fs.readFileSync('test.json','utf8'); //讀取json文件 let temp = JSON.parse(data) //將數據解析為json對象 let tempIndex = 0; //臨時索引,用來計數是否到達5000條 let tempFileCount = 1 //臨時文件計數,用於計數文件名,result1...result50 temp.forEach(element => { //遍歷json數組 if(tempIndex<5000){ //判斷是否小於5000,如果是則寫入當前文件,這裡使用的是追加的寫入方式 fs.appendFileSync("result"+tempFileCount+".txt",element.wxid+'\r','utf8',function(err){},tempIndex++) }else{ //當tempIndex等於5000時寫入新的文件,並且將文件名計數加一 console.log("create new file") tempFileCount++; fs.appendFileSync("result"+tempFileCount+".txt",element.wxid+'\r','utf8',function(err){},console.log(tempFileCount+': 開始寫入')) tempIndex = 0; } });
用Nodejs解析json數據
nodejs是服務器端的javascript的處理平臺。json(JavaScript Object Notation) 是一種輕量級的數據交換格式。我們在寫服務端的程序時往往需要使用json來處理數據。
這裡我們用一個簡單的例子來演示如何用nodejs來處理json數據文件。
第一,我們需要在ubuntu14.04上安裝nodejs,我們可以使用如下命令:
$ sudo apt-get install nodejs
安裝完畢, 我們可以使用如下命令進行測試:
$ nodejs -v v0.10.25
第二,準備一個測試json文件, test.json,內容如下:
{ "person": { "name": "wanger", "birth": "1999" } }
第三,創建js腳本來解析json文件,main.js
#!/usr/bin/nodejs var cwd = process.argv[1].substring(0, process.argv[1].lastIndexOf("/")); var fs = require('fs'); function load(file, cb) { fs.readFile(file, function(err, data) { if (err) throw err; cb(JSON.parse(data.toString())); }); } (function() { if (process.argv.length < 2) { console.log("usage\n\t" + process.argv[1] + " loadfile"); return; } load(process.argv[2], function(obj) { console.log("%s\n", obj.person.name); console.log("%s\n", obj.person.birth); }); })();
第四,測試和運行
$ ./main.js test.json wanger 1999
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- nodejs 中的讀取文件fs模塊示例詳解
- nodejs中的讀取文件fs與文件路徑path解析
- node.js調用腳本(python/shell)和系統命令
- Nodejs新特性async和await的使用詳解
- 一文帶你瞭解JavaScript基礎之深拷貝和淺拷貝