Struct を Json など別の構造体へ変換するのに便利なクレートです。以下の2つを使うのでCargo.toml
のdependencies
などへ追加します。
[dependencies]
serde = "1.0.104"
serde_json = "1.0.44"
Json
Struct を Json に変換
対象の Struct にはserde::Serialize
を持たせます。
#[derive(serde::Serialize)]
struct User {
name: String,
}
後はインスタンス化したUser
へserde_json::to_string
させます。
let user = User {
name: "nju33".into(),
};
println!("{}", serde_json::to_string(&user).unwrap());
// {"name":"nju33"}
Json (文字列)を Struct に変換
Struct を満たす Json 文字列を用意し、serde_json::from_str
へそれを渡します。
let json = r#"{"name":"nju33"}"#;
println!("{:?}", serde_json::from_str::(json).unwrap());
// User { name: "nju33"
Json 文字列はserde_json::json
マクロを使うと JavaScript のオブジェクト定義のように書けます。
let json = serde_json::json!({
"name": "nju33"
});
println!(
"{:?}",
serde_json::from_str::(&json.to_string()).unwrap()
);