6 个版本

0.1.5 2022年9月22日
0.1.4 2022年9月21日

#1827编码

Download history 103/week @ 2024-03-13 135/week @ 2024-03-20 73/week @ 2024-03-27 202/week @ 2024-04-03 117/week @ 2024-04-10 28/week @ 2024-04-17 14/week @ 2024-04-24 98/week @ 2024-05-01 68/week @ 2024-05-08 109/week @ 2024-05-15 131/week @ 2024-05-22 139/week @ 2024-05-29 139/week @ 2024-06-05 261/week @ 2024-06-12 132/week @ 2024-06-19 105/week @ 2024-06-26

646 每月下载量
用于 2 crates

MIT 许可证

28KB
704

rust_json

Latest Version

为学习 Rust 编写的 JSON 序列化和反序列化器。

特性

从字符串解析 JSON

use rust_json::json_parse;

fn example() {
    let j = json_parse(r#"
    {
        "S": [
            1, 
            2.3, 
            {
                "4": {
                    "5": {
                        "6": [
                            null,
                            true, 
                            false
                            ]
                        }
                    }
            }
        ]
    }"#);

    println!("{}", j["S"]);
}

使用 JSON 字面量构建 JsonElem

use rust_json::json;

fn example() {
    let j = json!(
        {
            "S": [
                1.2, 
                "2.3", 
                {
                    "4": {
                        "5": {
                            "6": [
                                null,
                                true, 
                                false
                                ]
                            }
                        }
                }
            ]
        }
    );

    println!("{}", j["S"]);
}

使用 JS 对象字面量风格构建 JsonElem

use rust_json::js_object;

fn proc(n: i32) -> i32 {
    n * n + n / 2
}

fn main() {
    let a = true;
    let n = 32;
    let j = js_object!([
        {
            a // 属性的简洁表示 Property Shorthand
        },
        {
            // 使用表达式作为值 Using expression
            proc_n: if n % 2 == 0 { proc(n) + 1 } else { 0 }, 
            [n * 12]: n * 12 // 属性名表达式 Computed Property Names
        }
    ]);
    println!("{}", j);
}

ToJson 和 FromJson 特性

实现 ToJsonFromJson 以序列化和反序列化自定义结构。或者您可以使用 rust_json_derive 来推导特性。

带有空格的字符串化

use rust_json::json;

fn example() {
    let j = json!({"a": 12});
    println!("{:#}", j);
    // { 
    //     "a": 12
    // }
    println!("{:3}", j);
    // { 
    //    "a": 12
    // }
}

无运行时依赖