3个版本
0.2.5 | 2023年11月29日 |
---|---|
0.2.4 | 2023年11月29日 |
0.1.0 |
|
#1114 在 编码
每月40次下载
34KB
996 行
tiny-json-rs
一个用于编码和解码JSON的极简Rust库,提供比serde更小的内存占用。
简介
tiny-json-rs
是一个开源库,专为在Rust应用程序中高效处理JSON而设计。它旨在提供类似于serde库的功能,但侧重于减少内存使用,使其成为资源受限环境或性能至关重要的应用程序的理想选择。
特性
- 高效的JSON编码/解码:优化以降低内存使用。
- 易于集成:简单的API,兼容标准Rust结构。
- 可定制:可扩展以支持各种数据类型。
用法
将 tiny-json-rs
添加到您的 Cargo.toml
[dependencies]
tiny-json-rs = "0.2.5"
基本示例
结构定义
定义您的结构体并派生 Deserialize
和 Serialize
use tiny_json_rs::{Deserialize, Serialize};
#[derive(Debug, PartialEq, Deserialize, Serialize)]
pub struct A {
pub a: i32,
pub b: String,
}
#[derive(Debug, PartialEq, Deserialize, Serialize)]
pub struct B {
pub a: i32,
pub b: Vec<String>,
}
也可以派生自定义名称
#[derive(Debug, PartialEq, Deserialize, Serialize)]
pub struct C {
#[Rename = "CustomName"]
pub a: i32,
pub b: String,
}
反序列化JSON
将JSON字符串转换为Rust结构体
let json = r#"{"a": 1, "b": "Hello"}"#;
let parsed: A = tiny_json_rs::decode(json.to_string()).unwrap();
assert_eq!(parsed.a, 1);
assert_eq!(parsed.b, "Hello");
序列化为JSON
将Rust结构体转换为JSON字符串
let obj = C {
a: 1,
b: "Hello".to_string(),
};
let json = tiny_json_rs::encode(obj);
assert_eq!(json, r#"{"CustomName":1,"b":"Hello"}"#);
测试
tiny-json-rs
附带了一套测试用例以确保功能正常
#[test]
fn test_deserialize() {
// ...
}
#[test]
fn test_deserialize_vec() {
// ...
}
#[test]
fn test_encode_json() {
// ...
}
许可协议
tiny-json-rs
采用MIT许可协议。
有问题吗?
这是一个实验性项目,尚未准备好用于生产。如果您发现任何问题,请在此处报告
依赖项
~1.5MB
~35K SLoC