我正在接收一个字符串,类似于下面这样的键值对(既不是JSON格式,也不是HashMap格式),它来自于隐式的JSONWebkey
crate:
{ "kid":"kid-value",
"kty":"RSA",
"use":"sig",
"n":"n-value",
"e":"e-value" }
现在我该如何将这个HashMap
转换为正确的形式以提取 "e" 和 "n" 的键和值呢?或者有没有更简单的方法来提取确切的 "e" 和 "n" 值呢?
我正在接收一个字符串,类似于下面这样的键值对(既不是JSON格式,也不是HashMap格式),它来自于隐式的JSONWebkey
crate:
{ "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(())
}