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

MIT 许可证

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"

基本示例

结构定义

定义您的结构体并派生 DeserializeSerialize

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