Rust:
JSONを活用する
どうやって:
RustでJSONを扱うために、シリアライゼーションとデシリアライゼーションのためにserde
クレートとserde_json
が広く使用されます。まず、これらをあなたのCargo.toml
に含めていることを確認してください:
[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
例1: JSONをRust構造体にデシリアライズする
Rust構造体を定義し、Deserialize
とSerialize
のためのderiveマクロを使用します:
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct User {
id: u32,
name: String,
email: String,
}
fn main() {
let json_data = r#"
{
"id": 1,
"name": "Jane Doe",
"email": "[email protected]"
}
"#;
let user: User = serde_json::from_str(json_data).unwrap();
println!("ユーザーID: {}", user.id);
println!("ユーザー名: {}", user.name);
println!("ユーザーのメール: {}", user.email);
}
出力:
ユーザーID: 1
ユーザー名: Jane Doe
ユーザーのメール: [email protected]
例2: Rust構造体をJSONにシリアライズする
同じUser
構造体を使用して:
let user = User {
id: 1,
name: "Jane Doe".to_string(),
email: "[email protected]".to_string(),
};
let json_data = serde_json::to_string(&user).unwrap();
println!("{}", json_data);
出力:
{"id":1,"name":"Jane Doe","email":"[email protected]"}
これらの例は、JSONをRust構造体にデシリアライズし、Rust構造体をJSON文字列にシリアライズする基本的な流れを示しています。Serdeは、オプショナルフィールド、複雑なネスティング、JSONに直接サポートされていないタイプなど、JSONを扱うための豊富なツールセットを提供します。