A streaming JsonPath processor for Java that extracts JSON data without loading entire documents into memory.
JsonSurfer is a streaming JsonPath processor for Java that enables efficient extraction of data from JSON documents without loading them entirely into memory. It solves the problem of processing large or streaming JSON by allowing selective querying with JsonPath expressions, reducing memory footprint and improving performance. The library supports multiple JSON parsers and binary formats, making it versatile for various use cases.
Java developers working with large JSON datasets, real-time data streams, or applications requiring memory-efficient JSON parsing, such as data pipelines, APIs, and microservices.
Developers choose JsonSurfer for its streaming capabilities, which prevent out-of-memory errors with big JSON files, and its JsonPath support for precise data extraction. It outperforms traditional parsers in benchmarks and offers non-blocking and stoppable parsing for high-performance scenarios.
A streaming JsonPath processor in Java
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Parses JSON incrementally using a SAX-like parser to avoid loading entire documents into memory, crucial for large files or streams as highlighted in the streaming feature.
Supports a wide range of JsonPath operators including wildcards, recursive descent, and filters, enabling precise data extraction with examples provided in the README's operator table.
Offers event-driven, non-blocking interfaces for high-throughput applications, such as NIO-based systems, allowing asynchronous JSON processing without blocking threads.
Integrates with popular JSON parsers like Gson, Jackson, FastJson, and JsonSimple, providing flexibility and choice in underlying parsing technology.
The Resolver API for POJOs does not support wildcard or recursive descent operators, restricting complex queries on object graphs without converting to binary formats, as admitted in the README.
Binary format support (e.g., Avro, CBOR) is limited to Jackson parser and requires additional dependencies, adding configuration overhead and potential vendor lock-in.
Methods like collectOne and collectAll are deprecated, which may confuse developers and necessitate updates to newer patterns like collectors or iterators.