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 编码
511,638 每月下载量
在 33 个 crate 中使用 (15 直接)
56KB
920 行
tinyjson
tinyjson 是一个解析/生成 JSON 格式文档的库。
本库的目标是
- 简洁性:此库使用标准容器,如
Vec
或HashMap
作为其内部表示,并将其暴露给用户。用户可以通过标准 API 操作 JSON 值。并且它将此 crate 尽可能地保持小。 - 显式性:此库不会从用户那里隐藏内存分配。您需要自己分配内存,如
Vec
、String
、HashMap
。这对于阅读您的源代码的用户来说,可以显示内存分配发生的位置。您还可以控制内存分配的方式(例如,使用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