2 个版本
0.1.2 | 2021年4月22日 |
---|---|
0.1.1 | 2021年1月21日 |
0.1.0 |
|
#2225 在 编码
20KB
391 行
yojson-rs: Rust的JSON库
此库将JSON数据(Yojson格式)解析为嵌套的Rust树形数据结构。
Yojson值
在crate中使用Value
枚举来表示Yojson中的值
pub enum Value {
Null,
Bool(bool),
Integer(i64),
Float(f64),
String(String),
Assoc(Assoc),
Array(Array),
Tuple(Vec<Value>),
Variant(Variant),
}
Yojson格式是JSON格式的扩展。有关更多信息,请参阅"Yojson格式文档"。
- 元组:类似于JSON数组,但使用括号而不是方括号,例如
(1.23, 4.56)
。 - 无参数的变体:
<"Foo">
。 - 一个参数的变体:
<"Bar": 123>
。 - 接受未引用的字段名和变体,如果它们匹配以下模式:
[A-Za-z][A-Za-z_0-9]*
:{ x: <Foo>, "#y": <Bar2> }
。 - 注释:
/* 多行注释 */
和// 行尾注释
。 - 特殊数字实体:
[ Infinity, -Infinity, NaN ]
。
解析JSON
解析JSON数据。
use yojson_rs;
fn main () {
let json = r#"
{
x : 123,
y : {
"y1" : "abc\ndef\u0021",
"y2" : [null, 123.45, (12, "y3")]
},
z : NaN
}
"#;
assert!(yojson_rs::parser::parse(json).is_ok());
}
转换为JSON字符串。
可以通过to_string
将数据结构转换为JSON字符串。
use yojson_rs;
fn main() {
let json_str = r#"
{
x : 123,
y : {
"y1" : "abc\ndef\u0021",
"y2" : [null, 123.45, (12, "y3")]
},
z : NaN
}
"#;
let json = yojson_rs::parser::parse(json_str).unwrap();
println!("{}", yojson_rs::to_string(json));
}
(c) 2021 Naoki Kaneko (a.k.a. "puripuri2100")
依赖项
~2.3–3MB
~64K SLoC