一、主要内容说明
当我们处理爬取的数据时,可以使用filter等数组方法将数据转化为数组形式,再选择性的选择我们需要的数组的某个元素,整合为我们想要的数据形式保存于json文件中。本文主要是使用fs模块的读写功能,写、读我们自己设置的人员信息。对于fs模块安装的问题,具体可以看往一篇的博文。本文的源码只是简单的读写json文件,概念形的运用。
(一)、JSON文件
JSON数据以键值对的形式组织,键必须是字符串,值可以为字符串、数字、布尔值、数组、对象、null。如:"key:value"
,key为键,value为值。文件后缀通常为“.json
”,如:文件.json
。对象使用大括号{}
包含,键值对用逗号“,
”隔开。数组使用中括号[]
包含,元素间用逗号分隔。
(二)、JSON用到的相关方法
1.JSON.stringify()方法
JSON.stringify()
方法用于将对象转化为JSON字符串,具体格式如下。
JSON.stringify(A, B, C)A----要转换成字符串的内容,通常为对象或数组,本文源码举例使用对象数组。B----调换函数,对A的内容进行转变,若不转变用空值nullC----每个层级缩进的空格数,主要为了美观。
对于B的调换函数,就是转换化对象内容中,有些内容我们并不需要,可以使用函数方法设置不让它显示,当我们对原内容不需要增加或减少时,选null空值便可。
对于C的内容,因为默认情况下将内容转化为字符串后,字符串的内容是独一行保存在文件中,此时若使用层级空格缩进,可以让内容更加美观。如下:
- 未使用空格层级缩进的情况,如下图:
- 使用空格层级缩进的情况,如下图:
2.JSON.parse()方法
JSON.parse()
方法主要用于解析内容,将JSON字符串内容解析成我们需要的键值对的形式的对象。
JSON.parse(A, B)A----要解析的JSON字符串B----可选,函数,对返回的键值对进行函数处理。本文例子未用。
二、例子
json_31">(一)、fs模块写、读json文件
json_32">1.源码1 (fs模块写、读json文件)
import * as fs from "fs";// 定义 Message 接口,包含人员信息的属性
interface Message {name: string; // 姓名age: number; // 年龄height: number; // 身高date: string; // 日期类型使用字符串表示
}// 创建一个人员信息数组
let mes: Message[] = [{ name: "小八", age: 23, height: 150, date: (new Date()).toLocaleString() },{ name: "阿七", age: 21, height: 158, date: (new Date()).toLocaleDateString() }, // 只保留日期{ name: "芽儿", age: 28, height: 168, date: (new Date()).toLocaleTimeString() }, // 只保留时间{ name: "雅儿", age: 12, height: 160, date: (new Date()).toLocaleString() }
];// 将人员信息写入 JSON 文件
fs.writeFile("人员信息.json", JSON.stringify(mes, null, 2), "utf8", (err) => {if (err) {console.log("文件创建失败!", err); // 输出错误信息return; // 终止回调}console.log("文件创建成功!"); // 成功提示信息
});// 读取 JSON 文件中的人员信息
fs.readFile("人员信息.json", "utf8", (err, data) => {if (err) {console.log("文件读取失败!", err); // 输出错误信息return; // 终止回调}// 将读取的数据解析为 Message 数组let mesArray: Message[] = JSON.parse(data); // 遍历人员信息数组,输出每个人的姓名、年龄、身高和记录时间mesArray.forEach((message) => {console.log(`姓名:${message.name},年龄:${message.age},身高:${message.height},记录时间:${message.date}`);});
});
2.源码1的运行效果
json_78">(1)、创建json文件部分
我们是先创建一个json文件,文件名为“人员信息.json”,内容为源码中设置的对象数组mes,有4人的人员信息。通过JSON.stringify()方法将mes数组内容转化为JSON字符串。文件中的内容为字符串类型。
- 文件如下:
- 文件内容如下:
json_84">(1)、读取json部分
使用JSON.parse()方法解析前面转化为JSON字符串的内容,将字符串对象内容再转化为键值对形式,以便我们输出显示。
三、结语
理解了概念再拓展,当例子里的人员信息,更换为数据库的大量信息,是不是我们就可以在此基础上添加更多的函数方法,来读写文件。
json文件好像我们常见的配置文件。
每天将内容添加往前推一点,久而久之这部分内容也就推过去了,同时这部分内容也同属于自己了。
由于笔者的能力有限,创作的内容有所不足在所难免,也敬请读者包涵和指出,万分感谢!
四、定位日期
2024.11.1;
20:07;