| Crates.io | oak-django |
| lib.rs | oak-django |
| version | 0.0.1 |
| created_at | 2025-10-20 14:52:27.610384+00 |
| updated_at | 2026-01-23 04:27:23.052867+00 |
| description | Django template parser with support for Django template language and web development. |
| homepage | https://github.com/ygg-lang/oaks |
| repository | https://github.com/ygg-lang/oaks |
| max_upload_size | |
| id | 1892042 |
| size | 95,288 |
A high-performance Django template parser with streaming support, built on oak-core for efficient template parsing and validation.
oak-django is a fast and memory-efficient Django template parser designed to handle Django template syntax including template tags, filters, and variables. Built on the reliable oak-core foundation, it provides comprehensive template parsing with excellent error reporting and validation capabilities.
Basic example:
use oak_json::JsonParser;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let parser = JsonParser::new();
let json = r#"{
"name": "John Doe",
"age": 30,
"email": "john@example.com",
"active": true
}"#;
let value = parser.parse(json)?;
println!("Parsed JSON: {:?}", value);
Ok(())
}
use oak_json::{JsonParser, JsonValue};
let parser = JsonParser::new();
let json = r#"{
"user": {
"id": 123,
"name": "Alice",
"roles": ["admin", "user"]
},
"settings": {
"theme": "dark",
"notifications": true
}
}"#;
let value = parser.parse(json)?;
if let JsonValue::Object(obj) = value {
println!("User ID: {:?}", obj.get("user").and_then(|u| u.get("id")));
}
use oak_json::{JsonParser, JsonValue};
let parser = JsonParser::new();
let json = r#"[
{"id": 1, "name": "Item 1", "price": 10.50},
{"id": 2, "name": "Item 2", "price": 25.99},
{"id": 3, "name": "Item 3", "price": 7.25}
]"#;
let value = parser.parse(json)?;
if let JsonValue::Array(items) = value {
for item in items {
if let JsonValue::Object(obj) = item {
println!("Item: {:?} - ${:?}",
obj.get("name"), obj.get("price"));
}
}
}
use oak_json::{JsonParser, JsonValue};
use std::fs::File;
use std::io::BufReader;
let parser = JsonParser::new();
let file = File::open("large_data.json")?;
let reader = BufReader::new(file);
// Parse large JSON files efficiently
let value = parser.parse_reader(reader)?;
println!("Parsed large JSON with {} top-level keys",
value.as_object().map(|o| o.len()).unwrap_or(0));
use oak_json::{JsonParser, JsonValue, ValidationError};
let parser = JsonParser::new();
let json = r#"{
"username": "john_doe",
"age": 25,
"email": "john@example.com"
}"#;
let value = parser.parse(json)?;
// Validate required fields
fn validate_user(data: &JsonValue) -> Result<(), ValidationError> {
if let JsonValue::Object(obj) = data {
obj.get("username").ok_or("Missing username")?;
obj.get("email").ok_or("Missing email")?;
// Validate email format
if let Some(JsonValue::String(email)) = obj.get("email") {
if !email.contains('@') {
return Err("Invalid email format".into());
}
}
}
Ok(())
}
validate_user(&value)?;
use oak_json::{JsonParser, JsonPath};
let parser = JsonParser::new();
let json = r#"{
"users": [
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"}
],
"total": 2
}"#;
// Parse only specific parts
let users = parser.parse_path(json, JsonPath::new("users"))?;
println!("Users array: {:?}", users);
use oak_json::JsonParser;
let parser = JsonParser::new();
let invalid_json = r#"{
"name": "John",
"age": 30,
"active": true,
"scores": [85, 92, "invalid", 78]
}"#;
match parser.parse(invalid_json) {
Ok(value) => println!("Parsed: {:?}", value),
Err(e) => {
println!("Parse error at line {} column {}: {}",
e.line(), e.column(), e.message());
// Get detailed error information
if let Some(context) = e.context() {
println!("Error context: {}", context);
}
}
}
The parser generates a comprehensive JSON value structure:
oak-json integrates seamlessly with:
Check out the examples directory for comprehensive examples:
Contributions are welcome! Please feel free to submit issues or pull requests.
Pex JSON Parser - Fast, reliable JSON parsing for Rust applications 🚀