1 个不稳定版本
0.1.0 | 2022年9月3日 |
---|
#1166 在 编码
87KB
2.5K SLoC
Serde UBJSON (通用二进制JSON)
serde_ub_json 是 Rust/Serde 的 UBJSON 序列化格式实现
为什么
结构:此格式在结构上等同于 JSON,并且具有相同的数据类型集(数字、布尔值、字符串、数组和对象)。
大小:null、true 和 false 值的大小 小 75%,大数值 ~小 50%,数组和对象容器 每值小 1 字节。
解析:布尔值和数值不是作为字符串编码 - 它们以字节形式表示,并且不需要解析,字符串是带有长度的字节数组,这意味着它们始终可以安全地反序列化为字符串切片,而不需要数据复制。
如何安装
cargo add serde_ub_json
或者在 Cargo.toml 中添加为依赖项
[dependencies]
serde_ub_json = "0.1"
如何使用
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);
关于
此项目旨在成为 UBJSON 标准的完整实现。
依赖关系
~0.4–1MB
~23K SLoC