#json-parser #json #parser #no-std

no-std tiny-json-rs

tiny-json-rs 是一个简单的 Rust JSON 解析器

3个版本

0.2.5 2023年11月29日
0.2.4 2023年11月29日
0.1.0 2023年11月27日

#1114编码

每月40次下载

MIT 许可协议

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"

基本示例

结构定义

定义您的结构体并派生 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