#serialization #json #serde #binary #standard #string #ubjson

serde_ub_json

UBJSON (通用二进制JSON) 序列化文件格式

1 个不稳定版本

0.1.0 2022年9月3日

#1166编码

MIT 许可证

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