#json #json-parser #parser #convert-json

yojson-rs

Yojson格式(https://mjambon.github.io/mjambon2016/yojson.html)解析器

2 个版本

0.1.2 2021年4月22日
0.1.1 2021年1月21日
0.1.0 2021年1月20日

#2225编码

MIT 许可证

20KB
391

yojson-rs: Rust的JSON库

crates.io docs.rs Build Status source badge license badge

此库将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