ts:使用fs模块创建、读取json文件

news/2024/11/6 10:01:52/

ts:使用fs模块创建、读取json文件

  • 一、主要内容说明
    • (一)、JSON文件
    • (二)、JSON用到的相关方法
      • 1.JSON.stringify()方法
      • 2.JSON.parse()方法
  • 二、例子
    • (一)、fs模块写、读json文件
      • 1.源码1 (fs模块写、读json文件)
      • 2.源码1的运行效果
        • (1)、创建json文件部分
        • (1)、读取json部分
  • 三、结语
  • 四、定位日期

一、主要内容说明

当我们处理爬取的数据时,可以使用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;


http://www.ppmy.cn/news/1544784.html

相关文章

C# wpf 如何监控变量值改变?

在C# WPF应用程序开发中,监控变量值的改变是一项常见的需求。这可以通过多种方式实现,包括使用数据绑定、属性通知、消息传递等。本文将详细介绍几种常用的方法来监控WPF中的变量值改变。 1. 使用数据绑定和属性通知 WPF中的数据绑定机制允许UI元素与后台…

scala的控制方法作用域

scala的控制方法作用域有五种: 默认访问权限;protected访问权限;private访问权限;private[package]访问权限;private[this]访问权限 class Car(){//1.默认访问权限def run():Unit {}def test():Unit {run()} }object …

服装品牌零售业态融合中的创新发展:以开源 AI 智能名片 S2B2C 商城小程序为视角

摘要:本文以服装品牌零售业态融合为背景,探讨信息流优化和资金流创新的重要作用,并结合开源 AI 智能名片 S2B2C 商城小程序,分析其如何进一步推动服装品牌在零售领域的发展,提高运营效率和用户体验,实现商业…

sklearn红酒数据集分类器的构建和评估

实验目的: 1. 掌握sklearn科学数据包中决策树和神经网络分类器的构建 2. 掌握对不同分类器进行综合评估 实验数据: 红酒数据集 红酒数据集利用红酒的化学特征来描述三种不同类型的葡萄酒。 实验内容与要求: 解压文件得到wine数据。利用pa…

半波正弦信号的FFT变换

目录 Hello, 大家好,这一期我们谈谈半波正弦信号的FFT变化长什么样子。本文硬件使用GFARM02硬件模块[1],文章最后有其淘宝链接。核心器件为STM32F103RCT6,为Cortex-M3核,采用的CMSIS版本为CMSIS_5-5.6.0。 如图1所示&…

【华为HCIP实战课程三十】中间到中间系统协议IS-IS路由渗透及TAG标识详解,网络工程师

一、路由泄露 1、默认情况Level 1不会学到Level2的明细路由,L2可以学到L1的明细路由 2、FIB数据转发,路由负载,通过随机数据中的五元组hash,hash值决定数据走哪条链路 R1设备ping和telnet通过抓包查看走的都是S1/0/0接口 抓包进行过滤;ip.a…

【WebApi】C# webapi 后端接收部分属性

在C#的Web API后端接收部分属性,可以使用[FromBody]特性配合JsonPatchDocument或者Delta来实现。这里提供一个使用JsonPatchDocument的示例。 首先,定义一个模型类:public class User public class User {public int Id {get; set; }

Python WordCloud库与jieba分词生成词云图的完整指南

Python WordCloud库与jieba分词生成词云图的完整指南 关键技术点及代码示例 1. 安装必要的库 使用pip安装wordcloud和jieba库: pip install wordcloud pip install jieba2. jieba分词 精确模式 import jiebatext "Python是广泛使用的编程语言。它被用于…