개발자 / 유형

JSON-Rust 구조체 변환기

JSON 샘플을 snake_case 필드, 이름 변경, 누락되거나 null인 키의 Option, 배열의 Vec를 사용하는 serde의 Serialize 및 Deserialize derive Rust 구조체로 변환합니다.

JSON-Rust 구조체 변환기: 각 객체는 public 필드가 있는 구조체가 됩니다. 키는 snake_case로 변환되며 JSON 표기가 달라지면 #[serde(rename = "…")]가 추가됩니다. type과 같은 Rust 키워드는 raw identifier(r#type)로 변환되고, serde가 자동으로 원래 키로 매핑합니다. 일부 레코드에서 누락되거나 null인 키는 Option<T>가 되며, 명확한 타입을 판별할 수 없는 값은 serde_json::Value가 됩니다. 여러 샘플에 대한 출력은 컴파일되었으며, serde 1로 샘플을 역직렬화했습니다. 서버에 파일을 전혀 업로드하지 않고 브라우저에서 100% 로컬로 실행됩니다.

카테고리
개발자 도구
실행 횟수
브라우저에서
비용
무료 · 가입 불필요
사용 가능 여부
사용 가능
JSON을 Rust로로컬 처리

브라우저에서 전부 실행됩니다

Rust

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Address {
    pub city: String,
    pub zip_code: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
    pub id: i64,
    pub user_name: String,
    pub avatar_url: String,
    pub score: f64,
    pub tags: Vec<String>,
    pub address: Address,
    pub manager_id: Option<i64>,
    #[serde(default)]
    pub nickname: Option<String>,
}

pub type UserList = Vec<User>;

serde(derive 기능 포함) 및 serde_json 크레이트가 필요합니다. 키와 필드 이름이 다르면 #[serde(rename)]을 사용해 필드 이름을 snake_case로 변환합니다. 일부 객체에서 누락되거나 null인 키는 Option이 됩니다. 샘플에 소수가 없는 한 숫자는 i64가 됩니다.

데이터 읽기와 쓰기

serde_json::from_str::<Root>(&text)?로 역직렬화하고 serde_json::to_string(&value)?로 직렬화하십시오. 입력의 알 수 없는 키는 기본적으로 무시됩니다. 이를 거부하려면 구조체에 #[serde(deny_unknown_fields)]를 추가하십시오.

같은 샘플을 Go로 변환하려면 JSON to Go를 참조하십시오. 샘플을 먼저 정리하려면 JSON 포맷터를 사용하십시오.

Option과 누락된 키

누락된 키와 null 값은 모두 Option 필드에서 None으로 역직렬화됩니다. 둘을 구분해야 한다면 serde_with 크레이트와 함께 Option<Option<T>>를 사용하거나 해당 필드에 serde_json::Value를 유지하십시오.

사용 방법

  1. JSON 샘플을 붙여넣습니다. 일반적인 레코드가 여러 개 포함된 배열을 권장합니다.
  2. 최상위 타입의 이름을 지정하고, 직렬화할 때 None 필드를 제외할지 선택합니다.
  3. serde와 serde_json이 필요한 크레이트에 구조체를 복사합니다.

개인정보 보호 및 제한사항

JSON은 브라우저에서 변환되며 업로드하지 않습니다.

관련 도구

자주 묻는 질문

어떤 크레이트가 필요합니까?

derive 기능이 활성화된 serde와 serde_json이 필요합니다. Cargo.toml에 serde = { version = "1", features = ["derive"] } 및 serde_json = "1"을 추가하십시오.

왜 i64와 f64를 사용합니까?

모든 JSON 숫자를 안전하게 담을 수 있기 때문입니다. 범위를 알고 있다면 u32, u8 또는 f32로 좁힐 수 있습니다.

대신 #[serde(rename_all)]을 사용할 수 있습니까?

예. 모든 키가 camelCase와 같은 동일한 규칙을 따른다면 구조체에 #[serde(rename_all = "camelCase")] 하나를 지정하여 개별 이름 변경을 대신할 수 있습니다.

무료 도구 · 브라우저에서회 실행 · 계정 불필요