简单介绍JSONStream的使用

embedded/2025/1/21 6:35:35/

地址

作用

这个模块是根据需要筛选出json数据中自己所需要的数据

使用

var JSONStream = require("JSONStream");
var parse = require("fast-json-parse");
var fs = require("fs");fs.createReadStream("./time.json").pipe(JSONStream.parse("rows.*.doc")).on("data", (data) => {// 在这里处理每个 JSON 对象console.log(data);}).on("end", () => {console.log("所有数据已处理完毕");});

parse参数介绍

  1. rows.*.doc 路径
  • JSONStream.parse(‘rows.*.doc’) 是用于提取 JSON 中嵌套字段的路径。
  • ‘rows.*.doc’ 表示你要从 JSON 数据中提取:
    • rows 字段,它是一个数组。
      • 是通配符,表示匹配 rows 数组中的每个元素。
    • doc 表示从每个元素中提取 doc 属性。
// JSONStream.parse('rows.*.doc')
// json数据 
{"rows": [{ "doc": { "id": "doc1", "content": "data1" } },{ "doc": { "id": "doc2", "content": "data2" } }]
}
// 输出
{ "id": "doc1", "content": "data1" }
{ "id": "doc2", "content": "data2" }
  1. … 操作符:递归下降操作符
  • … 是 JSONPath 中的递归下降操作符,表示在 JSON 树中的任意深度查找匹配的节点。它会查找对象的子节点,不论深度如何。
// JSONStream.parse('..doc')
// json数据
{"data": {"info": {"rows": [{ "doc": { "id": "doc1" } },{ "doc": { "id": "doc2" } }]}}
}
// 输出
{ "id": "doc1" }
{ "id": "doc2" }
  1. 使用数组表示路径
  • 数组中的元素可以是字符串、正则表达式、布尔值或函数,它们分别用于匹配对象的键、值或键名。
    • JSONStream.parse([‘row’, true, /^doc/])
    • ‘row’ 会匹配 row 键。
    • true 会匹配所有键(即匹配 row 对象中的所有键)。
    • /^doc/ 是正则表达式,匹配所有以 doc 开头的键。
// JSONStream.parse(['row', true, /^doc/])
// json数据
{"row": {"doc1": { "id": "doc1", "content": "data1" },"doc2": { "id": "doc2", "content": "data2" }}
}
// 输出
{ "id": "doc1", "content": "data1" }
{ "id": "doc2", "content": "data2" }
以上用法均来自gpt搜索, parse参数还有其他的类型,可以使用gpt搜索用法

放一张长截图
在这里插入图片描述


http://www.ppmy.cn/embedded/155698.html

相关文章

C链表的一些基础知识

一、链表的基本概念 链表是一种常见的线性数据结构,它由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针(单链表情况)。通过指针将各个节点连接起来,与数组不同,链表在内存中的存储不是连续的…

在 Vue 3 中实现插件化架构:设计可扩展的前端插件系统

随着前端项目的复杂性不断提升,模块化和可扩展性在架构设计中的重要性愈加突出。Vue 3 的 Composition API 和插件机制为我们实现插件化架构提供了便利。本文将深入探讨如何在 Vue 3 中构建一个高效、灵活的插件系统,为大型前端项目的扩展性打下基础。 …

如何使用Spring Boot框架整合Redis:超详细案例教程

目录 # 为什么选择Spring Boot与Redis整合? 1. 更新 pom.xml 2. 配置application.yml 3. 创建 Redis 配置类 4. Redis 操作类 5. 创建控制器 6. 启动应用程序 7. 测试 # 为什么选择Spring Boot与Redis整合? 将Spring Boot与Redis整合可以充分利…

vue3使用音频audio标签

文章目录 一、背景二、页面三、标签介绍四、代码五、代码说明场景1&#xff1a;针对加载固定格式的比如MP3文件&#xff0c;可直接使用\<audio>标签场景2&#xff1a;针对播放告警内容&#xff0c;比如中文或者英文词条情况 一、背景 项目使用vue3&#xff0c;需求针对告…

Notepad++移除所有空格

1.打开Notepad。 2.打开你想要编辑的文件。 3.按下 Ctrl H 打开查找和替换对话框&#xff0c;并选择 “正则表达式”。 4.在 “查找目标” 框中输入 \s。 5.在 “替换为” 框中留空&#xff0c;不填写任何内容。 6.点击 “全部替换” 按钮。

系统服务管理脚本-源码安装httpd

1. 安装包 去apache官网下载httpd包&#xff0c;存入虚拟机 如果需要从其他虚拟机转移到另一个虚拟机 scp httpd-2.4.62.tar.bz2 192.168.1.11: ~ ~是转移的虚拟机的目录 2.解压及环境 tar xfj httpd-2.4.62.tar.bz2 -C /usr/src/ rpm -e httpd --nodeps # 如果系统自带ht…

Azure面试

文章目录 项目地址一、Azure Storage1. What are the benefits of Azure Storage&#xff1f; 二、汇总 项目地址 教程作者&#xff1a;教程地址&#xff1a; 代码仓库地址&#xff1a; 所用到的框架和插件&#xff1a; dbt airflow一、Azure Storage 1. What are the bene…

PyTorch使用教程(15)-常用开源数据集简介

计算机视觉&#xff08;Computer Vision, CV&#xff09;作为人工智能领域的重要分支&#xff0c;其技术发展与应用落地离不开高质量的数据支撑。公开、免费且大规模的计算机视觉开源数据集扮演着至关重要的角色&#xff0c;它们为科研人员提供了标准化的训练平台&#xff0c;加…