| Crates.io | compress-json-rs |
| lib.rs | compress-json-rs |
| version | 0.1.0 |
| created_at | 2025-04-21 16:49:49.273604+00 |
| updated_at | 2025-04-21 16:49:49.273604+00 |
| description | Store JSON data in a space-efficient compressed form, with round-trip compression/decompression. |
| homepage | https://github.com/web-mech/compress-json-rs#readme |
| repository | https://github.com/web-mech/compress-json-rs |
| max_upload_size | |
| id | 1642953 |
| size | 28,414 |
AI-driven Rust port of the JavaScript compress-json library by Beenotung. Store JSON data in a space-efficient compressed form with lossless round-trip compression and decompression.
serde_json::ValueAdd to your Cargo.toml:
[dependencies]
compress-json-rs = "0.1.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
use compress_json_rs::{compress, decompress};
use serde_json::{json, Value};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Original JSON data
let data: Value = json!({
"user": "Alice",
"active": true,
"roles": ["admin", "user"]
});
// Compress into (values, root_key)
let compressed = compress(&data);
// Serialize compressed form for storage or transmission
let serialized = serde_json::to_string(&compressed)?;
// ...later, deserialize and decompress
let (values, root): (Vec<String>, String) = serde_json::from_str(&serialized)?;
let restored = decompress((values, root));
assert_eq!(restored, data);
println!("Round-trip successful: {}", restored);
Ok(())
}
/// Compressed representation: (values array, root key)
pub type Compressed = (Vec<String>, String);
/// Compress a JSON value into its compressed form
pub fn compress(o: &serde_json::Value) -> Compressed;
/// Decompress a compressed form back into JSON
pub fn decompress(c: Compressed) -> serde_json::Value;
See docs.rs for full lower-level API details.
Licensed under the BSD-2-Clause license. See LICENSE for details.