--serde-json[1] 我们可以通过运行以下命令来安装它: cargo add serde-json 完成后,我们可以像这样手动创建JSON: use serde_json::{Result, 比较 Rust 的 JSON crates 其实,在大部分情况下,serde-json已经能够满足我们的需求了。但是,在一些特殊情况下,例如数据量过大,此时serde-json就有点吃力了。 (simd-json/sonic-rs) 从上图可知serde-json有碾压式优势,也就是不到万不得已,我们还是使用serde-json。不过,本着知己知彼,方能百战不殆。 serde-json ❝serde-json 是 Rust 中下载和使用最多的 JSON 库之一。 ❞ 就性能而言,serde-json 本身并不慢。然而,然后对比其他两个crate就有点稍逊了。 通常情况下,simd-json 的 API 与 serde-json 相同,因此如果我们想在任何时候切换,通常不应该遇到任何问题。
命令 命令是强类型的声明式, 和我们在serde-json中使用 structopt 和JSON结构定义CLI类似,下列机器人接受以下命令 /username <你的用户名> /usernameandage
justjson: 高效 json 解析器 justjson[35] 是一个高效的 json 解析器,相比 serde-json 避免了更多的额外的分配。 作者写了这篇文章介绍他为什么不喜欢用 serde-json[36],也介绍了 justjson 的设计理念。也可以参考reddit 相关讨论[37]。 706802392260362240/hyper-ish-2022-in-review [35] justjson: https://github.com/khonsulabs/justjson/ [36] 为什么不喜欢用 serde-json
Long private HashMap<Long/* brokerId */, String/* broker address */> brokerAddrs; } 但是在 rust serde-json 看来,这个 json 是非法的,反序列时会失败,无奈只能去修改 serde-json 的源码。
同时,系统充分利用了Rust的serde-json库的高性能特性,因为Rust的serde-pickle库尚不完整,无法有效处理复杂的递归数据结构。
网络传输过程中涉及到序列化反序列化,那么在 serde / serde-json 的基础上,是不是还可以再研究一些其它的序列化反序列化方案,着重了解一下它们的使用场景和优劣?
可以看到 nom 比较接近 serde(rust 里 serde-json 的性能是顶级的存在 [6]),而 pest 还差得很远: ?