Skip to content

Add streaming JSON module - #351

Open
Mendrejk wants to merge 13 commits into
softwaremill:mainfrom
Mendrejk:feature/json-streaming
Open

Add streaming JSON module#351
Mendrejk wants to merge 13 commits into
softwaremill:mainfrom
Mendrejk:feature/json-streaming

Conversation

@Mendrejk

@Mendrejk Mendrejk commented Aug 10, 2026

Copy link
Copy Markdown

Closes #344

Summary

  • Add a new json Maven module for lazy, backpressured NDJSON and top-level JSON array parsing/rendering over Jox Flow/ByteFlow.
  • Support Jackson Class, TypeReference, ObjectReader, and ObjectWriter overloads, plus JsonReadSettings for bounded NDJSON records.
  • Document the API and cover framing, UTF-8/BOM handling, null policy, cancellation, failure propagation, and I/O integrations.

Notes

  • Array parsing currently uses ByteFlow.runToInputStream. Bulk-read latency and read-ahead are inherited from flows and tracked separately.

Mendrejk and others added 13 commits August 6, 2026 15:30
Add the Java 25 json Maven module and its Jackson 3.1.5 LTS dependency so the integration participates in the reactor build.
Provide lazy NDJSON and top-level JSON-array parsing and rendering over Jox flows with Jackson readers and writers.
Exercise NDJSON and array parsing/rendering across chunk boundaries, errors, cancellation, generic types, and I/O integrations.
Document the json dependency, supported wire formats, Jackson configuration, and composition with Jox flows and I/O.
Keep null guards consistent across Class/TypeReference and reader/writer overloads.

Co-authored-by: Cursor <cursoragent@cursor.com>
Express JSON delimiters through flow composition instead of mutable first-element state, without treating byte chunk boundaries as API behavior.

Co-authored-by: Cursor <cursoragent@cursor.com>
Separate serialization, record validation, and byte framing into explicit flow transformations.

Co-authored-by: Cursor <cursoragent@cursor.com>
Fail clearly when Jackson produces null instead of allowing later asynchronous stages to crash, and strengthen edge-case coverage for streaming behavior and failures.

Co-authored-by: Cursor <cursoragent@cursor.com>
Separate test setup, execution, and assertions consistently so each JSON behavior is easier to scan and reason about.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep Java requirements and the structured-concurrency comparison accurate without relying on a particular publication date.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

New jox integration: streaming JSON

1 participant