json_mlake ยท API

json.ndjson

Structs

NDJSONIterator

struct NDJSONIterator[target: StringSpan[ImmStaticOrigin] = StringSpan("cpu")]

Lazy iterator over NDJSON lines.

Parses lines on-demand, reducing memory usage for large files.

Implements Movable

__init__

def __init__(out self, data: String)

Initialize iterator with NDJSON data.

has_next

def has_next(self) -> Bool

Check if there are more JSON values to parse.

next

def next(mut self) -> Value

Parse and return the next JSON value.

Raises Error if no more values or parse error.

count_remaining

def count_remaining(self) -> Int

Count remaining non-empty lines without consuming them.

Functions

parse_ndjson

def parse_ndjson[target: StringSpan[ImmStaticOrigin] = StringSpan("cpu")](s: String) -> List[Value]

Parse NDJSON (newline-delimited JSON) string into a list of Values.

Each non-empty line is parsed as a separate JSON value. Empty lines and lines containing only whitespace are skipped.

Example: var ndjson = '{"a":1}\n{"a":2}\n{"a":3}' var values = parse_ndjson(ndjson) print(len(values)) # Prints 3.

Parameters
target: "cpu" (default) or "gpu" for parsing backend.
Args
s: NDJSON string with one JSON value per line.

parse_ndjson_lazy

def parse_ndjson_lazy[target: StringSpan[ImmStaticOrigin] = StringSpan("cpu")](s: String) -> NDJSONIterator[target]

Create a lazy iterator over NDJSON lines.

More memory-efficient than parse_ndjson() for large files as it only parses one line at a time.

Example: var iter = parse_ndjson_lazy(ndjson_string) while iter.has_next(): var value = iter.next() process(value).

Parameters
target: "cpu" (default) or "gpu" for parsing backend.
Args
s: NDJSON string with one JSON value per line.

dumps_ndjson

def dumps_ndjson(values: List[Value]) -> String

Serialize a list of Values to NDJSON format.

Example: var values = ListValue values.append(loads('{"a":1}')) values.append(loads('{"a":2}')) print(dumps_ndjson(values)) Outputs {"a":1} and {"a":2} on separate lines.

Args
values: List of Value objects to serialize.