Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Oboe.js reads json, giving you the objects as they are found without waiting for the stream to finish
The oboe npm package is a library for streaming JSON over HTTP. It allows you to parse JSON as it is being received, which can be useful for handling large JSON responses or for real-time data processing.
Streaming JSON Parsing
This feature allows you to parse JSON data as it is being streamed from an HTTP source. The `node` method is used to handle individual nodes as they are parsed, and the `done` method is called when the entire JSON has been parsed.
const oboe = require('oboe');
oboe('http://example.com/big.json')
.node('!.*', function(node) {
console.log('Parsed node:', node);
})
.done(function(parsedJson) {
console.log('Finished parsing:', parsedJson);
});
Pattern Matching
Oboe allows you to use pattern matching to extract specific parts of the JSON data as it is being parsed. In this example, the `node` method is used to match the `author.name` pattern and log the author's name.
const oboe = require('oboe');
oboe('http://example.com/big.json')
.node('!author.name', function(name) {
console.log('Author name:', name);
});
Error Handling
Oboe provides error handling capabilities to manage issues that may arise during the JSON parsing process. The `fail` method is used to handle any errors that occur.
const oboe = require('oboe');
oboe('http://example.com/big.json')
.fail(function(error) {
console.error('Failed to parse JSON:', error);
});
The stream-json package is another library for streaming JSON parsing. It provides a more modular approach, allowing you to build a custom pipeline for processing JSON data. Compared to oboe, stream-json offers more flexibility and control over the parsing process.
JSONStream is a library for parsing and stringifying large JSON data streams. It is similar to oboe in that it allows for streaming JSON parsing, but it is more focused on providing a simple and efficient way to handle large JSON data sets.
event-stream is a toolkit for working with streams in Node.js. It includes utilities for creating and manipulating streams, including JSON parsing. While not specifically focused on JSON, it provides a versatile set of tools for stream processing, making it a more general-purpose alternative to oboe.
This project is now archived. As of 2024, no code changes have been made in 5 years, and I (Jim) have not had the time to port it to new technology, or maintain it in a way that it deserves.
For existing projects using this code, it should continue to work, but I would recommend looking for other solutions.
I (Jim) still think there is a clear gap in the market for a streaming-first JSON parser that doesn't wait for responses to finish before it starts using them. For anyone who is interested in making that project, reach out and I'd be happy to discuss. Today, with modern javascript and typescript (ie async iterators), a much nicer modern API could be made than the one I created in 2013.
Many thanks to JuanCaicedo and Aigeec in particular for continuing to contribute fixes and modernise this project through to ~2020.
The Oboe.js website has been ported to a static site Github Pages, and the plan is to keep it online with a deprecation notice.
The original README follows below.
Oboe.js is an open source Javascript library for loading JSON using streaming, combining the convenience of DOM with the speed and fluidity of SAX.
It can parse any JSON as a stream, is small enough to be a micro-library, doesn't have dependencies, and doesn't care which other libraries you need it to speak to.
We can load trees larger than the available memory. Or we can instantiate classical OOP models from JSON, or completely transform your JSON while it is being read.
Oboe makes it really easy to start using json from a response before the ajax request completes. Or even if it never completes.
FAQs
Oboe.js reads json, giving you the objects as they are found without waiting for the stream to finish
The npm package oboe receives a total of 393,764 weekly downloads. As such, oboe popularity was classified as popular.
We found that oboe demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.