简单介绍JSONStream的使用

地址

作用

这个模块是根据需要筛选出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.rhkb.cn/news/4236.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息奥赛一本通 1168:大整数加法

这道题是一道大整数加法,涉及到高精度的算法,比如说有两个数要进行相加,1111111111111111111111111111111111111112222222222222222222222222222222,那么如果这两个数很大的话我们常用的数据类型是不能进行计算的,那么…

架构思考与实践:从通用到场景的转变

在当今复杂多变的商业环境中,企业架构的设计与优化成为了一个关键议题。本文通过一系列随笔,探讨了业务架构的价值、从通用架构到场景架构的转变、恰如其分的架构设计以及如何避免盲目低效等问题。通过对多个实际案例的分析,笔者揭示了架构设…

[JavaScript] 运算符详解

文章目录 算术运算符(Arithmetic Operators)注意事项: 比较运算符(Comparison Operators)注意事项: 逻辑运算符(Logical Operators)短路运算:逻辑运算符的返回值&#xf…

Java测试开发平台搭建(九)前端

1. 搭建前端vue环境 Vue3 安装 | 菜鸟教程 2. 创建项目 1.进入ui vue ui 2. create项目 3. 成功之后添加插件: cli-plugin-router vue-cli-plugin-vuetify 4. 添加依赖 axios 5. 点击任务开始运行 如果报错: 修改vue.config.jsconst { defineConfig }…

【Linux系统编程】—— 深度解析进程等待与终止:系统高效运行的关键

文章目录 进程创建再次认识fork()函数fork()函数返回值 写时拷贝fork常规⽤法以及调用失败的原因 进程终⽌进程终止对应的三种情况进程常⻅退出⽅法_exit函数exit函数return退出 进程等待进程等待的必要性进程等待的⽅法 进程创建 再次认识fork()函数 fork函数初识&#xff1…

最新版Edge浏览器加载ActiveX控件技术——allWebPlugin中间件之awp_CreateActiveXObject接口用法

背景 ActiveXObject‌是JavaScript中的一个特殊对象,用于在Internet Explorer(IE)浏览器中创建和操作COM(Component Object Model)对象。COM是一种面向对象的软件组件技术,允许不同应用程序之间的互操作性。…

使用 Java 和 FreeMarker 实现自动生成供货清单,动态生成 Word 文档,简化文档处理流程。

在上一篇博客中主要是使用SpringBootApache POI实现了BOM物料清单Excel表格导出,详见以下博客: Spring Boot Apache POI 实现 Exc()el 导出:BOM物料清单生成器(支持中文文件名、样式美化、数据合并&#…

JS基础(5):运算符和语句

一.运算符 1.赋值运算符 加减乘除都是一样的,,-,*,/ 2.一元运算符:经常用来计数 自增: 每次只能加一 自减:-- 前置自增 后置自增 结…

以租赁合同的例子讲清楚 开源协议原理和区别

开源协议通俗易懂的方式介绍清楚原理和区别 开源协议其实就是软件的“使用规则”,决定了别人可以如何使用、修改、分享你的代码。通俗一点说,如果你写了一段代码,开源协议就是告诉别人在什么条件下他们可以使用你的代码,以及他们可…

Flowable 管理各业务流程:流程设计器 (获取流程模型 XML)、流程部署、启动流程、流程审批、流程挂起和激活、任务分配

文章目录 引言I 表结构主要表前缀及其用途核心表II 流程设计器(Flowable BPMN模型编辑器插件)Flowable-UIvue插件III 流程部署部署步骤例子:根据流程模型ID部署IV 启动流程启动步骤ACT_RE_PROCDEF:流程定义相关信息例子:根据流程 ID 启动流程V 流程审批审批步骤Flowable 审…

【C++课程学习】:C++中的IO流(istream,iostream,fstream,sstream)

🎁个人主页:我们的五年 🔍系列专栏:C课程学习 🎉欢迎大家点赞👍评论📝收藏⭐文章 C学习笔记: https://blog.csdn.net/djdjiejsn/category_12682189.html 前言: 在C语…

四、华为交换机 STP

生成树协议(STP)的核心目的是在存在冗余链路的网络中,构建一个无环的拓扑结构,从而防止网络环路带来的广播风暴等问题 一、STP 原理 选举根桥:网络中的每台交换机都会有一个唯一的桥 ID(BID)&am…

数字图像处理:实验二

任务一: 将不同像素(32、64和256)的原图像放大为像素大 小为1024*1024的图像(图像自选) 要求:1)输出一幅图,该图包含六幅子图,第一排是原图,第 二排是对应放大…

综述:大语言模型在机器人导航中的最新进展!

简介 机器人导航是指机器人能够在环境中自主移动和定位的能力。本文系统地回顾了基于大语言模型(LLMs)的机器人导航研究,将其分为感知、规划、控制、交互和协调等方面。具体来说,机器人导航通常被视为一个几何映射和规划问题&…

VIVADO FIFO (同步和异步) IP 核详细使用配置步骤

VIVADO FIFO (同步和异步) IP 核详细使用配置步骤 目录 前言 一、同步FIFO的使用 1、配置 2、仿真 二、异步FIFO的使用 1、配置 2、仿真 前言 在系统设计中,利用FIFO(first in first out)进行数据处理是再普遍不过的应用了&#xff0c…

嵌入式知识点总结 C/C++ 专题提升(一)-关键字

针对于嵌入式软件杂乱的知识点总结起来,提供给读者学习复习对下述内容的强化。 目录 1.C语言宏中"#“和"##"的用法 1.1.(#)字符串化操作符 1.2.(##)符号连接操作符 2.关键字volatile有什么含意?并举出三个不同的例子? 2.1.并行设备的硬件寄存…

【前端动效】HTML + CSS 实现打字机效果

目录 1. 效果展示 2. 思路分析 2.1 难点 2.2 实现思路 3. 代码实现 3.1 html部分 3.2 css部分 3.3 完整代码 4. 总结 1. 效果展示 如图所示,这次带来的是一个有趣的“擦除”效果,也可以叫做打字机效果,其中一段文本从左到右逐渐从…

AI守护煤矿安全生产:基于视频智能的煤矿管理系统架构全解析

前言 本文我将介绍我和我的团队自主研发设计的一款AI产品的成果展示——“基于视频AI识别技术的煤矿安全生产管理系统”。 这款产品是目前我在创业阶段和几位矿业大学的博士共同从架构设计、开发到交付的全过程中首次在博客频道发布, 我之前一直想写但没有机会来整理这套系统的…

51c嵌入式~单片机~合集6

我自己的原文哦~ https://blog.51cto.com/whaosoft/13127816 一、STM32单片机的知识点总结 本文将以STM32F10x为例,对标准库开发进行概览。主要分为三块内容: STM32系统结构寄存器通过点灯案例,详解如何基于标准库构建STM32工程 STM3…

【Cadence tip】噪声仿真方法

1.噪声仿真设置 以五管OTA的噪声仿真为例 2.仿真结果 2.1等效输入噪声 2.2查看噪声贡献