1 unstable release
0.1.0 | Sep 3, 2022 |
---|
#2284 in Encoding
27 downloads per month
87KB
2.5K
SLoC
Serde UBJSON (Universal Binary JSON)
serde_ub_json is UBJSON serialization format implementation for Rust/Serde
Why
Structure: this format is structurally equivalent to JSON, and has the same set of data types (numbers, booleans, strings, arrays and objects).
Size: null, true and false values are 75% smaller, large numeric values are ~50% smaller, array and object containers are 1-byte-per-value smaller.
Parsing: boolean and numeric values are not encoded as strings - they are represented as bytes and do not require parsing, strings are byte arrays with length, which means they can always be safely deserialized as string slices without data copying.
How to install
cargo add serde_ub_json
Or add as a dependency in Cargo.toml:
[dependencies]
serde_ub_json = "0.1"
How to use
use serde::{Deserialize, Serialize};
use serde_ub_json::{Result, to_bytes, from_bytes};
//...
#[derive(Serialize, Deserialize)]
struct Person {
name: String,
age: u8,
}
//...
let p = Person { name: "John Doe", age: 43 };
let bytes = to_bytes(&p)?; // serialize
let person = from_bytes::<'_, Person>(&bytes)?; // deserialize
assert_eq!(p.name, person.name);
assert_eq!(p.age, person.age);
About
This projects aims to be a complete implementation of UBJSON standard.
Dependencies
~0.3–1MB
~21K SLoC