AJSON - 一个好用且快速的RUST JSON解析器

2,434 阅读1分钟

AJSON - 一个好用且快的RUST JSON解析器 项目地址: github

demo 自己试一试

示例JSON

{
    "name": {"first": "Tom", "last": "Anderson"},
    "age":37,
    "children": ["Sara","Alex","Jack"],
    "fav.movie": "Deer Hunter",
    "friends": [
        {"first": "Dale", "last": "Murphy", "age": 44, "nets": ["ig", "fb", "tw"]},
        {"first": "Roger", "last": "Craig", "age": 68, "nets": ["fb", "tw"]},
        {"first": "Jane", "last": "Murphy", "age": 47, "nets": ["ig", "tw"]}
    ]
}

小试牛刀

如果需要获取Tom的姓氏,只需要一行代码:

extern crate ajson;

fn main() {
    let lastname = ajson::get(json, "name.last");
    println!("name is {}", last);
}

让我们来数一数tom有一个孩子吧:

extern crate ajson;
fn main() {
    let num = ajson::get(json, "children.#");
    println!("Tom has {} kids!", num.as_u64());
}

他们分别叫什么名字呢:

extern crate ajson;

fn main() {
    let children = ajson::get(json, "children");
    for kid in children.as_array() {
        println!("my name is {}", kid);
    }
}

等等!第三个孩子叫什么名字来着,让他再说一遍:


extern crate ajson;

fn main() {
    let third_kid = ajson::get(json, "children.#.2");
    println!("sir! my name is {}", third_kid);
}

Tom最爱的电影是什么?

extern crate ajson;

fn main() {
    let fav_movie = ajson::get(json, "fav.movie");
    // fav_movie.exsits() == false;
}

什么?没有最爱的电影?不可能,是你的姿势不对

extern crate ajson;

fn main() {
    let fav_movie = ajson::get(json, "fav\.movie");
    println!("fav movie {}", fav_movie);
}

我听说Tom有好几个朋友,他们分别叫什么?

extern crate ajson;

fn main() {
    let names = ajson:get(json, "friends.#.first");
    for first_name in names.as_array() {
        println!("name {}", first_name);
    }
}

未完待续...