Rust:
JSON과 함께 일하기

어떻게:

Rust에서 JSON을 다루려면, 직렬화와 역직렬화를 위해 serde 크레이트와 serde_json을 광범위하게 사용합니다. 먼저, Cargo.toml에 이들을 포함시키는 것을 확인하세요:

[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

예제 1: JSON을 Rust 구조체로 역직렬화하기

Rust 구조체를 정의하고 DeserializeSerialize를 위한 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]"}

이 예제들은 Rust 구조체를 JSON으로 역직렬화하고, Rust 구조체를 다시 JSON 문자열로 직렬화하는 기본적인 흐름을 보여줍니다. Serde는 선택적 필드, 복잡한 중첩, JSON에 의해 직접적으로 지원되지 않는 타입들을 다루는 것을 포함하여 JSON을 처리하기 위한 풍부한 도구 세트를 제공합니다.