如何在 Rust 中将 JSON 字符串转换为 HashMap?

How to convert JSON String to HashMap in Rust?

我收到如下字符串(不在JSON或HashMap中)作为键值对来自隐式 JSONWebkey 板条箱:

{ "kid":"kid-value",
"kty":"RSA",
"use":"sig",
"n":"n-value",
"e":"e-value" }

现在如何转换为正确的 HashMap 以提取“e”和“n”的键和值?或者有没有更简单的方法来提取“e”和“n”的精确值?

字符串是JSON,所以你应该只解析它。默认情况下 serde_json 忽略所有未知字段,因此只声明一个包含所需字段的结构就足够了:

#[derive(serde::Deserialize)]
struct Values {
    n: String,
    e: String,
}

fn main() -> Result<()> {
    let s = r#"{ "kid":"kid-value",
"kty":"RSA",
"use":"sig",
"n":"n-value",
"e":"e-value" }"#;

    let value = serde_json::from_str::<Values>(s)?;

    println!("{}", value.e);
    println!("{}", value.n);

    Ok(())
}