JSON to Rust 구조체 변환기
온라인 JSON to Rust 구조체 변환기. 붙여넣으면 즉시 serde 구조체를 생성합니다. 100% 브라우저 처리, 데이터 전송 없음. i64/u64/f64 타입, null은 Option. 무료.
옵션
JSON to Rust 변환이란 무엇인가요?
JSON to Rust 변환은 JSON 샘플을 serde의 #[derive(Serialize, Deserialize)] 매크로가 붙은, 바로 컴파일할 수 있는 Rust 구조체로 바꿔 줍니다. 그래서 API 응답이나 설정 파일을 위해 역직렬화 보일러플레이트를 손으로 쓸 필요가 없습니다. 이 빠른 Rust 구조체 생성기는 올바른 숫자 타입을 추론하고, 없는 필드를 Option으로 표시하며, snake_case가 아닌 키에는 #[serde(rename)]을 추가합니다 — 모두 100% 브라우저에서 이뤄집니다.
예시
API 응답
{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub id: i64,
pub name: String,
pub email: String,
pub active: bool,
pub roles: Vec<String>,
}
일반적인 REST 페이로드가 클라이언트에 바로 넣을 수 있는 serde 구조체가 됩니다. 숫자는 i64로 추론되고 배열은 Vec<String>이 됩니다.
중첩 객체
{"repo":"serde","owner":{"login":"dtolnay","id":100}} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub repo: String,
pub owner: Owner,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Owner {
pub login: String,
pub id: i64,
}
중첩 객체는 필드에서 참조되는 별도의 명명된 구조체(Owner)가 되며, 동일한 형태는 중복 제거됩니다.
객체 배열(선택적 필드)
{"users":[{"id":1,"nick":"x"},{"id":2}]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub users: Vec<User>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub nick: Option<String>,
}
객체 배열은 하나의 요소 구조체로 병합됩니다. 일부 항목에 없는 키는 Option<String>이 되며 #[serde(default)]는 필요 없습니다.
camelCase 키
{"login":"octocat","publicRepos":15,"followerCount":9001,"createdAt":"2011-01-25"} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub login: String,
#[serde(rename = "publicRepos")]
pub public_repos: i64,
#[serde(rename = "followerCount")]
pub follower_count: i64,
#[serde(rename = "createdAt")]
pub created_at: String,
}
필드는 snake_case가 되고 #[serde(rename)]이 원래 JSON 키로 다시 매핑합니다. login처럼 이미 snake 형태인 키에는 rename이 붙지 않습니다.
JSON을 Rust로 변환하는 방법
- 1
JSON 붙여넣기
JSON 객체, 배열 또는 API 응답을 입력 상자에 넣으세요. 변환이 즉시 시작됩니다.
- 2
출력 조정
루트 구조체의 이름을 바꾸고 serde derive, Debug와 Clone, pub 가시성을 토글하여 crate 스타일에 맞추세요.
- 3
복사 또는 다운로드
생성된 Rust를 한 번의 클릭으로 가져와 프로젝트에 바로 붙여넣으세요.
Common Use Cases
- 타입이 지정된 API 클라이언트
- REST나 GraphQL 응답 샘플을 reqwest 같은 클라이언트를 위한 serde 구조체로 바꿉니다. 역직렬화 보일러플레이트를 손으로 쓸 필요가 없습니다.
- 설정과 픽스처 파싱
- serde_json으로 역직렬화해야 하는 JSON 설정 파일, 테스트 픽스처, 웹훅 페이로드의 구조체를 생성합니다.
- 빠른 프로토타이핑
- 낯선 페이로드를 붙여넣으면 그 형태가 Rust 타입으로 즉시 표시됩니다 — 연결하기 전에 새로운 API를 빠르게 탐색하는 방법입니다.
변환이 작동하는 방식
- 구조적 추론
- 각 객체는 명명된 구조체가 되며, 동일한 형태는 중복 제거되어 복사본이 아닌 하나의 구조체를 얻습니다. 객체 배열은 키 단위로 병합되고, 일부 항목에 없는 키는 Option<T>가 됩니다.
- 올바른 숫자 타입 지정
- 정수는 i64로 매핑되고, i64::MAX를 넘으면 u64로 승격되며, u64를 넘으면 f64로 폴백합니다. 부동소수점은 토큰(1.0, 2e3)에서 감지되므로 serde 역직렬화가 부동소수점과 정수의 불일치로 실패하지 않습니다.
- 관용적이고 컴파일 가능한 식별자
- 키는 #[serde(rename)]으로 원래 키로 되돌리는 snake_case 필드가 됩니다. Rust 키워드, 중복 이름, 식별자가 아닌 키는 정제되므로 출력은 항상 컴파일됩니다.
- 100% 클라이언트 측
- 파싱과 생성이 네트워크 호출 없이 브라우저에서 실행되므로 데이터가 비공개로 유지됩니다.
깔끔한 Rust 구조체를 위한 팁
- 루트 구조체 이름 짓기
- 읽기 쉬운 코드를 위해 기본값 Root 대신 의미 있는 루트 이름(예: User, ApiResponse)을 설정하세요.
- serde_json은 필요할 때만 추가
- serde_json::Value는 비어 있거나 타입이 혼합된 배열과 null만 있는 필드에서 나타납니다. 가능하면 더 풍부한 샘플에서 그 필드에 구체적인 타입을 주거나, Cargo.toml에 serde_json을 추가하세요.
- Option과 필수를 검토
- 필드는 샘플이 그것을 생략할 때만 Option<T>로 표시됩니다. 대표적인 페이로드를 붙여넣어 도구가 필수 필드와 선택적 필드를 정확히 추론하도록 하세요.
자주 묻는 질문
JSON을 Rust 구조체로 어떻게 변환하나요?
serde derive를 생성하나요? serde와 serde_json이 필요한가요?
생성된 구조체로 JSON을 파싱하려면 어떻게 하나요?
선택적 필드와 null 필드는 어떻게 처리되나요?
camelCase 키와 Rust 키워드는 어떻게 처리하나요?
필드별 rename 대신 #[serde(rename_all)]을 쓸 수 있나요?
어떤 Rust 숫자 타입을 사용하나요?
날짜와 타임스탬프는 어떻게 타입이 지정되나요?
동적이거나 알 수 없는 키를 가진 객체는 어떻게 처리하나요?
제 JSON 데이터는 비공개이고 안전한가요?
serde 없이 순수한 Rust 구조체를 생성할 수 있나요?
이 도구는 무료인가요? 계정이 필요한가요?
관련 도구
모든 도구 보기 →Base64 디코더 · 인코더 (Base64 Decoder & Encoder)
인코딩 & 포매팅
Base64를 온라인에서 무료로 인코딩하고 디코딩합니다. UTF-8과 이모지를 완벽 지원하는 실시간 변환으로, 100% 브라우저에서 처리되어 회원 가입이 필요 없습니다.
Base64 이미지 변환기 (온라인)
인코딩 & 포매팅
Base64 문자열이나 데이터 URI를 온라인 브라우저에서 이미지로 디코딩합니다. 미리보고, 치수와 MIME을 읽은 뒤 PNG, JPG, GIF, SVG로 다운로드하세요. 업로드 없음.
CSV to JSON 변환기 (CSV to JSON Converter)
인코딩 & 포매팅
브라우저에서 CSV를 JSON으로 변환합니다. RFC 4180, 타입 추론, 헤더 행, 큰 정수 안전 처리. 100% 비공개, 업로드 없음.
.env을 JSON으로 변환하는 도구
인코딩 & 포매팅
.env 파일을 붙여넣으면 즉시 JSON으로 변환됩니다. 데이터베이스 비밀번호, API 키, 토큰이 브라우저를 절대 벗어나지 않는 100% 비공개 무료 온라인 dotenv 파서입니다.
무료 HTML 엔티티 디코더 — HTML 언이스케이프
인코딩 & 포매팅
온라인에서 HTML 엔티티를 디코딩하고 HTML을 언이스케이프하세요. 무료, 가입 불필요, 100% 브라우저에서 처리. 이름·10진수·16진수 참조를 문자로 되돌리며 업로드 없음.
무료 HTML 엔티티 인코더 — HTML 이스케이프
인코딩 & 포매팅
온라인에서 HTML 엔티티를 인코딩하고 특수문자(< > & " ')를 이스케이프하세요. 무료, 100% 브라우저에서 처리. 이름·10진수·16진수 출력, 업로드 없음.