Skip to main content

Module streaming

Module streaming 

Source
Expand description

Streaming JSON conversion. Streaming JSON parsing for HEDL

This module provides memory-efficient streaming parsers for processing large JSON files without loading the entire document into memory.

§Features

  • Incremental Parsing: Process JSON objects as they arrive
  • JSONL Support: Parse newline-delimited JSON (JSON Lines)
  • Memory Bounded: Configurable memory limits for safe streaming
  • Iterator-Based: Ergonomic Rust iterator interface

§Examples

§Streaming JSON Array

use hedl_json::streaming::{JsonArrayStreamer, StreamConfig};
use std::io::Cursor;

let json = r#"[
    {"id": "1", "name": "Alice"},
    {"id": "2", "name": "Bob"}
]"#;

let reader = Cursor::new(json.as_bytes());
let config = StreamConfig::default();
let streamer = JsonArrayStreamer::new(reader, config).unwrap();

for result in streamer {
    let doc = result.unwrap();
    println!("Parsed document: {:?}", doc);
}

§JSONL Streaming

use hedl_json::streaming::{JsonLinesStreamer, StreamConfig};
use std::io::Cursor;

let jsonl = r#"{"id": "1", "name": "Alice"}
{"id": "2", "name": "Bob"}
{"id": "3", "name": "Charlie"}"#;

let reader = Cursor::new(jsonl.as_bytes());
let config = StreamConfig::default();
let streamer = JsonLinesStreamer::new(reader, config);

for result in streamer {
    let doc = result.unwrap();
    println!("Parsed document: {:?}", doc);
}

Structs§

JsonArrayStreamer
Streaming parser for JSON arrays
JsonLinesStreamer
Streaming parser for JSONL (JSON Lines) format
JsonLinesWriter
Streaming writer for JSONL format
StreamConfig
Configuration for streaming JSON parsing
StreamConfigBuilder
Builder for StreamConfig

Enums§

StreamError
Errors that can occur during streaming JSON parsing