一、需求
在网上下载了ip库,格式为txt。想要把它转化为json格式, 可以通过node执行js文件来实现
目录如下:
ipjson
|-- delegated-apnic-latest.txt // 下载下来的ip库
|-- test.js // 使用node执行的js
|-- ip.json // 最终生成的json数据
- 由于文件中包含ipv4及ipv6、asn
二、代码实现
- test.js
const path = require('path')
const fs = require('fs')
let obj = {
list: [],
total: 0
}
//读取txt文件
fs.readFile(path.join(__dirname, 'delegated-apnic-latest.txt'), 'utf8', (err, data) => {
if (err) {
console.log('err', err);
return
}
//将字符串用\r\n分割成数组
const arr2 = data.split('\n');
let num = 0;
for(let item of arr2){
if(item.split('|')[2] == 'ipv4'){
let obj1={}
obj1.country = item.split('|')[1]
obj1.type = item.split('|')[2]
obj1.ip = item.split('|')[3]
obj.list.push(obj1)
num++
}else{
continue
}
}
obj.total = num
//将文件写入到b.json中
fs.writeFile(path.join(__dirname, 'ip.json'), JSON.stringify(obj),'utf8', (err, data) => {
if (err) {
console.log('err', err);
return
}
})
})
注意这里(由于这个写错了, 导致数组长度为1,调试了好久/(ㄒoㄒ)/~~):
- 在文件夹目录下,运行cmd
node test.js
- json文件