3 个版本
0.1.2 | 2023年11月29日 |
---|---|
0.1.1 | 2023年11月27日 |
0.1.0 | 2023年11月27日 |
#240 in #tiny
用于 tiny-json-rs
6KB
110 行
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