jsnpar - JSON Parser 🦀
Rust JSON parser implementation using parser combinators.
[!NOTE] Educational Project: This is a learning project and not recommended for production use. For production, use serde_json.
Motivation
As I'm learning Rust, I decided to write a minimal JSON parser using parser combinators. This is not intended to be used in production, but rather as a learning exercise. Although I plan to iterate until I achieve a more robust implementation, I'm open to suggestions and contributions.
I created this crate thanks to Bodil's article on parser combinators. I highly recommend checking it out.
Installation
Cargo
Usage
let json = r#"{"name": "yarso", "awesome": true}"#;
let result = parse;
if let Ok = result
Known Limitations
This is a custom implementation tailored to my own needs, so there is plenty of room for improvement.
Feel free to fork the project, open issues, or contribute suggestions.
Missing Features
- General optimizations
- Memory optimizations
- Custom errors types (currently returns a
String) - Streaming parser for large files
- Custom number types (only f64)
- Partial parsing
- More comprehensive test suite
- Performance benchmarks
- Examples and tutorials
Alternatives
For production use, consider these battle-tested alternatives:
- serde_json - The standard, highly optimized
- json - Simple and lightweight
- simd-json - SIMD-accelerated parsing
Contributing
This is primarily a learning project, but contributions are welcome! Feel free to:
- Open issues for bugs or feature requests
- Submit pull requests
- Share feedback on the code
Acknowledgments
- Bodil Stokke for the parser combinators tutorial
Built with:
- Rust - Because learning is fun
License
MIT License