Tool Kumar 도구

JSON을 Rust 구조체로 변환

Debug, Clone, Serialize, Deserialize를 derive하는 public Rust 구조체를 생성합니다. JSON 키는 snake_case 필드가 되고, 원래 키 이름과 다르면 serde rename 어트리뷰트가 붙습니다.

도구 사용 방법

  1. 필드 구성이 서로 다른 레코드까지 포함해 대표적인 응답을 붙여넣습니다.
  2. 생성된 출력을 검토하고, 필요하면 ‘루트 이름’을 바꿉니다.
  3. 코드를 복사하거나 다운로드한 뒤, 타입이 API 명세와 맞는지 확인합니다.

사용 예제

내장 변환기가 생성한 출력입니다. 두 항목의 price 값에서는 부동소수점 필드가, null과 문자열인 note 값에서는 null 허용 필드가 추론됩니다.

입력

{
  "user-id": 42,
  "profile": {
    "city": "London",
    "created_at": "2026-10-14T09:00:00Z"
  },
  "items": [
    {
      "price": 12,
      "note": null
    },
    {
      "price": 12.5,
      "note": "gift"
    }
  ]
}

출력

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
    #[serde(rename = "user-id")]
    pub user_id: i64,
    pub profile: Profile,
    pub items: Vec<Item>,
}

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

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Item {
    pub price: f64,
    pub note: Option<String>,
}

serde_json으로 구조체 사용하기

Cargo.toml에서 serde 의존성의 derive 기능을 활성화하고 serde_json을 추가합니다. 구조체를 모듈에 복사하고 응답을 역직렬화합니다.

샘플 기반 추론은 애플리케이션의 유효성 검사 규칙을 정해 주지 않습니다. 디코딩된 모델을 신뢰할 수 있는 입력으로 다루기 전에 범위, 필수 필드, 타임스탬프를 확인합니다.

let model: Root = serde_json::from_str(&response_body)?;
let text = serde_json::to_string(&model)?;

옵션 및 예외 사항

  • 배열은 Vec, 타입이 있는 null 허용 필드는 Option이 됩니다. 일부 레코드에 없는 필드에는 skip_serializing_if = "Option::is_none"이 추가됩니다.
  • 알 수 없거나 null로만 관찰되거나 타입이 섞인 값은 serde_json::Value를 사용합니다. rename은 구두점을 보존하며, Rust 예약어는 가능하면 raw 식별자를 사용합니다.
  • 정수는 i64를 쓰고, 부호 있는 64비트 범위를 넘으면 i128을 씁니다. 소수는 f64를 씁니다. 아주 큰 정수를 받기 전에 serde_json 지원 여부와 숫자 범위를 검토해야 합니다.
  • 날짜는 String으로 남습니다. 정확한 소수 금액에는 도메인 타입과 직렬화기가 필요하며, JSON 예시만으로는 그런 규칙을 알 수 없습니다.

개인정보 보호 기본 적용

문서는 이 브라우저에만 보관됩니다. Tool Kumar는 기기 안에서 파싱, 변환, 다운로드 파일 생성을 처리하며 계정이나 업로드 과정이 필요하지 않습니다.

JSON을 Rust 구조체로 변환 자주 묻는 질문

생성기에 serde derive가 포함되나요?
네. serde::{Deserialize, Serialize}를 import하고 구조체에 Debug, Clone, Serialize, Deserialize를 derive합니다.
JSON 이름이 보존되나요?
네. 필요한 곳에 serde rename 어트리뷰트를 출력하며, 필드별 매핑이 줄어든다면 rename_all = "camelCase"를 사용하기도 합니다.
null과 누락된 값은 어떻게 표현되나요?
타입이 있는 null 허용 필드나 누락된 필드는 Option<T>를 사용합니다. 알 수 없거나 null로만 관찰된 필드는 serde_json::Value를 사용하며, 이 값 자체가 JSON null을 담을 수 있습니다.
결과를 serde_json으로 역직렬화할 수 있나요?
네. Rust 프로젝트에 derive 기능을 켠 serde와 serde_json을 추가한 뒤, 생성된 Root 타입으로 역직렬화합니다.

관련 도구

JSON을 Go 구조체로 변환, JSON을 Java 레코드로 변환 및 JSON Schema 생성기.