39 个版本
0.14.0-rc3 | 2024年5月28日 |
---|---|
0.12.1 | 2021年6月29日 |
0.11.0 | 2020年10月5日 |
0.8.4 | 2020年6月9日 |
0.1.0 | 2017年12月13日 |
#378 在 编码
每月243次下载
用于 3 crates
115KB
3.5K SLoC
nson
NSON 是 NEW JSON 的缩写,类似于 JSON 的二进制编码序列化格式。与 JSON 类似,NSON 支持在其他映射和数组中嵌入映射和数组。与 JSON 不同的是,NSON 还包括 int32/uint32、int64/uint64、f32/f64、二进制、时间戳、id 类型。
NSON 从 BSON 中借鉴了一些内容,可以看作是 BSON 的精简版,去除了一些不常见或 MongoDB 独有的类型。NSON 还将 Double 分为 f32 和 f64,考虑到在大多数情况下,f64 对于高精度浮点数不是必需的。还添加了 uint32 和 uint64 来明确表示值不能是复数。
在 Rust 语言中,由于宏的存在,NSON 可以轻松编写,而不必必然将结构体序列化/反序列化。
此外,NSON 从二进制解析也很方便,该库实现了 "no_std",可用于微控制器。
示例
use nson::m;
fn main() {
let mut value = m!{
"code": 200,
"success": true,
"payload": {
"some": [
"pay",
"loads",
]
}
};
println!("{:?}", value);
// print: Map{"code": I32(200), "success": Bool(true), "payload":
// Map{"some": Array([String("pay"), String("loads")])}}
println!("{:?}", value.get("code"));
// print: Some(I32(200))
// insert new key, value
value.insert("hello", "world");
println!("{:?}", value.get("hello"));
// print: Some(String("world"))
}
依赖项
~1.3–2.7MB
~50K SLoC