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()
);