#序列化 #二进制编码 #JSON #JSON格式 #数据交换 #BSON

不依赖std nson

NSON 是一种轻量级的数据交换格式,类似于 JSON 或 BSON

39 个版本

0.14.0-rc32024年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编码

Download history 72/week @ 2024-04-16 40/week @ 2024-04-23 8/week @ 2024-04-30 5/week @ 2024-05-21 88/week @ 2024-05-28 6/week @ 2024-06-04 36/week @ 2024-07-02 243/week @ 2024-07-30

每月243次下载
用于 3 crates

MIT 许可证

115KB
3.5K SLoC

nson

crates.io docs.rs crates.io

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