#json #serde-json #序列化 #反序列化-json #规范 #格式化器 #olpc

bin+lib olpc-cjson

serde_json 格式化器,以 OLPC 样式的规范 JSON 进行序列化

4 个版本

0.1.3 2023 年 3 月 3 日
0.1.2 2022 年 10 月 3 日
0.1.1 2021 年 7 月 30 日
0.1.0 2019 年 11 月 9 日

#1164 in 解析实现

Download history 10618/week @ 2024-03-14 9900/week @ 2024-03-21 9061/week @ 2024-03-28 10661/week @ 2024-04-04 9118/week @ 2024-04-11 8359/week @ 2024-04-18 9037/week @ 2024-04-25 9062/week @ 2024-05-02 9487/week @ 2024-05-09 10532/week @ 2024-05-16 9039/week @ 2024-05-23 10767/week @ 2024-05-30 10146/week @ 2024-06-06 10852/week @ 2024-06-13 12427/week @ 2024-06-20 9522/week @ 2024-06-27

44,510 每月下载量
54 crate 中使用(直接使用 6 个)

MIT/Apache

22KB
328 行代码(不包括注释)

olpc-cjson 提供了一个 serde_json::Formatter,用于将数据序列化为由 OLPC 定义并在 TUF 中使用的 规范 JSON。它是作为 tough 的一部分开发的,tough 是一个用于使用 TUF 仓库的 Rust 库。

OLPC 的规范 JSON 规范与其他“规范 JSON”规范略有不同,也不是 JSON 的严格子集(特别是,ASCII 控制字符 0x00–0x1f 被直接打印,这在 JSON 中是不合法的)。因此,serde_json 不一定能反序列化此格式化器产生的 JSON。

此 crate 不是由 OLPC 开发或支持的;术语的使用仅用于区分此规范 JSON 与 其他规范 JSON

use olpc_cjson::CanonicalFormatter;
use serde::Serialize;
use serde_json::json;

let value = json!({"b": 12, "a": "qwerty"});
let mut buf = Vec::new();
let mut ser = serde_json::Serializer::with_formatter(&mut buf, CanonicalFormatter::new());
value.serialize(&mut ser).unwrap();
assert_eq!(buf, br#"{"a":"qwerty","b":12}"#);

依赖项

~1–1.5MB
~57K SLoC