serde exampleを作ろう(1)
Rust言語のserdeは便利なライブラリで必須といっても過言ではないライブラリですが、ネットで使い方を調べるとやりたい事が載ってないことが多いので用例集を書いておこうと思った次第です。
自分の備忘録としても使っていきます。
jsonファイルを新規作成・書き込み
必要なライブラリは以下のようになっています。
注意点はfeatures=["derive"]の記述がないと動かないことです。
[package]
name = "serde_json_example"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
serde = { version = "1.0.163", features = ["derive"] }
serde_json = "1.0.96"
ソースコード
use serde::{Deserialize, Serialize};
use std::fs::File;
use std::io::prelude::*;
#[derive(Serialize, Deserialize)]
struct Person {
name: String,
age: u32,
}
fn create_json_file() {
// 構造体のデータを作成
let person = Person {
name: "Alice".to_string(),
age: 25,
};
// 構造体をJSON文字列にシリアライズ
let serialized = serde_json::to_string(&person).unwrap();
// JSON文字列をファイルに書き込む
let mut file = File::create("person.json").unwrap();
file.write_all(serialized.as_bytes()).unwrap();
}
fn read_json_file() {
// JSONファイルを読み込む
let mut file = File::open("person.json").unwrap();
let mut contents = String::new();
file.read_to_string(&mut contents).unwrap();
// JSON文字列をデシリアライズして構造体に変換
let deserialized: Person = serde_json::from_str(&contents).unwrap();
// デシリアライズされたデータを表示
println!("Name: {}", deserialized.name);
println!("Age: {}", deserialized.age);
}
fn main() {
create_json_file();
read_json_file();
}
以上となります。
※このコードはChatGPTより生成したコードから私の方で明らかな間違いを修正したものとなります。