13 个稳定版本

2.5.1 2022年12月31日
2.5.0 2022年9月18日
2.3.0 2021年4月26日
2.2.0 2020年11月8日
0.0.2 2016年7月18日

#55 in 编码

Download history 106403/week @ 2024-03-14 106313/week @ 2024-03-21 98386/week @ 2024-03-28 98175/week @ 2024-04-04 99587/week @ 2024-04-11 98676/week @ 2024-04-18 97354/week @ 2024-04-25 99055/week @ 2024-05-02 99347/week @ 2024-05-09 104063/week @ 2024-05-16 98653/week @ 2024-05-23 118014/week @ 2024-05-30 120324/week @ 2024-06-06 123706/week @ 2024-06-13 137333/week @ 2024-06-20 105079/week @ 2024-06-27

511,638 每月下载量
33 个 crate 中使用 (15 直接)

MIT 许可证

56KB
920

tinyjson

version CI

tinyjson 是一个解析/生成 JSON 格式文档的库。

本库的目标是

  • 简洁性:此库使用标准容器,如 VecHashMap 作为其内部表示,并将其暴露给用户。用户可以通过标准 API 操作 JSON 值。并且它将此 crate 尽可能地保持小。
  • 显式性:此库不会从用户那里隐藏内存分配。您需要自己分配内存,如 VecStringHashMap。这对于阅读您的源代码的用户来说,可以显示内存分配发生的位置。您还可以控制内存分配的方式(例如,使用 with_capacity 方法预先分配内存)。
  • 无依赖:此库仅基于标准库构建。
  • 无安全代码:此库使用 Safe Rust 构建。
  • 经过良好测试:此库使用著名的测试套件进行测试

文档

要求

Rust 稳定工具链。

安装

将此 crate 添加到您的 dependencies 部分的 Cargo.toml

[dependencies]
tinyjson = "2"

示例

use tinyjson::JsonValue;
use std::collections::HashMap;
use std::convert::TryInto;

let s = r#"
    {
        "bool": true,
        "arr": [1, null, "test"],
        "nested": {
            "blah": false,
            "blahblah": 3.14
        },
        "unicode": "\u2764"
    }
"#;

// Parse from strings
let parsed: JsonValue = s.parse().unwrap();

// Access to inner value represented with standard containers
let object: &HashMap<_, _> = parsed.get().unwrap();
println!("Parsed HashMap: {:?}", object);

// Generate JSON string
println!("{}", parsed.stringify().unwrap());
// Generate formatted JSON string with indent
println!("{}", parsed.format().unwrap());

// Convert to inner value represented with standard containers
let object: HashMap<_, _> = parsed.try_into().unwrap();
println!("Converted into HashMap: {:?}", object);

// Create JSON values from standard containers
let mut m = HashMap::new();
m.insert("foo".to_string(), true.into());
let mut v = JsonValue::from(m);

// Access with `Index` and `IndexMut` operators quickly
println!("{:?}", v["foo"]);
v["foo"] = JsonValue::from("hello".to_string());
println!("{:?}", v["foo"]);

查看 文档 了解所有 API。

仓库

https://github.com/rhysd/tinyjson

许可证

MIT 许可证

无运行时依赖