Bootstrap

简单介绍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搜索用法

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

;