JSON to Rust 구조체 변환기 (serde)
JSON 객체를 serde 파생과 타입 매핑 필드가 포함된 Rust 구조체로 브라우저에서 변환합니다.
사용법
- 입력 상자에 JSON을 붙여넣거나 입력합니다.
- 필요하면 루트 구조체 이름을 변경합니다(기본값 AutoGenerated).
- 출력 상자에서 생성된 구조체를 복사하고 Cargo.toml에 serde를 추가합니다.
자세한 설명
펼치기접기
JSON 객체나 배열을 붙여넣으면 serde의 Serialize와 Deserialize를 파생하는 Rust 구조체 정의를 얻고, 중첩 객체마다 별도의 구조체가 만들어집니다. 정수는 i64, 소수는 f64로 매핑되며, 이미 스네이크 케이스가 아닌 키는 Rust 쪽에서 이름이 바뀌고 serde의 rename 속성이 전송 시의 원래 표기를 유지합니다. 덕분에 카멜 케이스 JSON이 손대지 않아도 관용적인 Rust로 역직렬화됩니다. 표본으로 타입을 정할 수 없는 자리에는 serde_json::Value를 씁니다. null과 빈 배열이 여기에 해당합니다. 직접 더해야 할 것은 선택성 하나뿐입니다. 모든 필드가 필수로 생성되니, API가 생략할 수 있는 필드는 Option으로 감싸고 serde의 default를 붙이세요. 모든 처리는 브라우저에서 이루어집니다.
자주 묻는 질문
숫자는 어떤 타입이 되나요?
정수는 i64, 소수점이 있는 숫자는 f64로 변환됩니다. u32, i32 등 다른 폭이 필요하면 직접 수정하세요.
null이나 빈 배열은 어떻게 처리되나요?
샘플로 타입을 추론할 수 없으므로 null은 Option<serde_json::Value>로, 빈 배열은 Vec<serde_json::Value>로 변환됩니다.
일부 필드에 serde rename이 붙는 이유는 무엇인가요?
Rust 필드는 snake_case를 사용합니다. JSON 키가 다르면(예: camelCase) 직렬화가 원래 키와 일치하도록 #[serde(rename = "...")] 속성이 추가됩니다.
제 JSON이 어딘가로 전송되나요?
아니요. 변환은 전적으로 브라우저에서 이루어지며 아무것도 업로드되지 않습니다.
필드를 선택적으로 만들려면 어떻게 하나요?
타입을 Option으로 감싸고 #[serde(default)]를 붙이세요. Option만으로는 키가 null일 수 있을 뿐이고, default 애트리뷰트가 있어야 키가 아예 없어도 됩니다. 둘 다 없으면 서버가 보내던 필드를 빼는 순간 역직렬화가 실패하는데, 표본은 그것을 결코 경고해 주지 못합니다.
절대 음수가 아닌 ID에 u64를 쓰면 안 되나요?
써도 되고 의도를 드러내는 데도 좋습니다. 기본값이 i64인 이유는 표본으로는 그 값이 결코 음수가 되지 않는다는 것을 증명할 수 없기 때문입니다. 부호 없는 타입은 예상치 못한 -1 하나를, 살펴보고 처리할 수 있는 값이 아니라 곧바로 역직렬화 오류로 바꿔 버립니다.
관련 도구
JSON to Go 구조체 변환기
JSON 객체를 json 태그가 붙은 Go 구조체로 브라우저에서 즉시 변환합니다.
개발
JSON to Python 데이터클래스 변환기
JSON 객체를 타입 힌트가 포함된 Python @dataclass 정의로 브라우저에서 변환합니다.
개발
JSON to Kotlin 데이터 클래스 변환기
JSON 객체를 타입이 지정된 프로퍼티가 포함된 Kotlin 데이터 클래스로 브라우저에서 변환합니다.
개발
JSON to C# 클래스 변환기
JSON 객체를 자동 프로퍼티 타입 매핑이 적용된 C# 클래스로 브라우저에서 변환합니다.
개발
JSON to Java 클래스(POJO) 변환기
JSON 객체를 타입이 매핑된 필드가 포함된 Java POJO 클래스로 브라우저에서 변환합니다.
개발
JSON to GraphQL 스키마(SDL) 변환기
JSON 객체를 스칼라 매핑이 적용된 GraphQL 타입 정의(SDL)로 브라우저에서 변환합니다.
개발