2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rustのserdeを使ってJsonの新規作成・読み込みをする

Posted at

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より生成したコードから私の方で明らかな間違いを修正したものとなります。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?