rust 使用serde_json解析json数据并打印出所有键

yjghlzjz  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(181)

这是rust解析json数据的一个简单示例。现在解析后,我如何找到一个serde_json::Value的键,例如:"name", "age", "phones"在这个例子中?

fn json_hello_world() {
    // Some JSON input data as a &str. Maybe this comes from the user.
    let data = r#"
        {
            "name": "John Doe",
            "age": 43,
            "phones": [
                "+44 1234567",
                "+44 2345678"
            ]
        }"#;

    // Parse the string of data into serde_json::Value.
    let value: serde_json::Value = serde_json::from_str(data).unwrap();

    println!(
        "Please call {} at the number {}",
        value["name"], value["phones"][0]
    );

    /*
    // how do I print out the keys?
    for key in value.keys() {
        println!("{}", key);
    }
    */
}

fn main() {
    json_hello_world();
}
i1icjdpr

i1icjdpr1#

如果value是一个对象(而不是数组或其他东西),则可以使用as_object

for key in value.as_object().unwrap().keys() {
    println!("{}", key);
}

Playground

相关问题