Tool Kumar 도구
JSON을 Rust 구조체로 변환
Debug, Clone, Serialize, Deserialize를 derive하는 public Rust 구조체를 생성합니다. JSON 키는 snake_case 필드가 되고, 원래 키 이름과 다르면 serde rename 어트리뷰트가 붙습니다.
도구 사용 방법
- 필드 구성이 서로 다른 레코드까지 포함해 대표적인 응답을 붙여넣습니다.
- 생성된 출력을 검토하고, 필요하면 ‘루트 이름’을 바꿉니다.
- 코드를 복사하거나 다운로드한 뒤, 타입이 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 타입으로 역직렬화합니다.