Tool Kumar 도구
JSON을 Swift 모델로 변환
Codable을 준수하는 Swift 구조체를 생성합니다. 프로퍼티 이름이 JSON과 다르면 변환기가 CodingKeys를 추가하므로, user-id 같은 키도 userId로 디코딩됩니다.
도구 사용 방법
- 필드 구성이 서로 다른 레코드까지 포함해 대표적인 응답을 붙여넣습니다.
- 생성된 출력을 검토하고, 필요하면 ‘루트 이름’을 바꿉니다.
- 코드를 복사하거나 다운로드한 뒤, 타입이 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"
}
]
}출력
import Foundation
struct Root: Codable {
let userId: Int
let profile: Profile
let items: [Item]
enum CodingKeys: String, CodingKey {
case userId = "user-id"
case profile, items
}
}
struct Profile: Codable {
let city: String
let createdAt: String
enum CodingKeys: String, CodingKey {
case city
case createdAt = "created_at"
}
}
struct Item: Codable {
let price: Double
let note: String?
}
JSONDecoder로 디코딩하기
생성된 Root 구조체와 함께 JSONDecoder를 사용합니다. Codable이므로 같은 모델을 JSONEncoder로 인코딩할 수도 있습니다.
이 출력에는 기본 키 전략을 그대로 사용합니다. CodingKeys에 created_at을 포함한 원래 JSON 키 이름이 이미 들어 있습니다.
let model = try JSONDecoder().decode(Root.self, from: responseData)
let encoded = try JSONEncoder().encode(model)옵션 및 예외 사항
- 정수는 Int, 소수는 Double, 부호 있는 64비트 범위를 넘는 정수는 Decimal로 추론합니다. 대상 플랫폼의 한계와 소수 정밀도를 확인해야 합니다.
- null이거나 누락된 필드는 옵셔널 프로퍼티가 됩니다. null로만 관찰되거나 타입이 섞인 구조에는 필요할 때 생성되는 JSONValue 헬퍼를 사용합니다.
- JSONValue는 숫자를 Double로 저장하므로, 정확한 금액이나 아주 큰 ID에는 명시적인 타입을 사용해야 합니다.
- 날짜 문자열은 String으로 남습니다. 필드를 Date로 바꾼다면 API 형식에 맞게 JSONDecoder.dateDecodingStrategy를 설정합니다.
개인정보 보호 기본 적용
문서는 이 브라우저에만 보관됩니다. Tool Kumar는 기기 안에서 파싱, 변환, 다운로드 파일 생성을 처리하며 계정이나 업로드 과정이 필요하지 않습니다.
JSON을 Swift 모델로 변환 자주 묻는 질문
- 클래스와 구조체 중 무엇을 생성하나요?
- Codable을 준수하는 구조체를 생성하며, let 프로퍼티와 중첩 모델 타입을 사용합니다. Foundation을 import합니다.
- CodingKeys는 언제 추가되나요?
- 프로퍼티 이름이 바뀌면, Swift 식별자를 원래 JSON 키에 다시 매핑하는 CodingKeys enum을 생성합니다.
- null은 어떻게 처리하나요?
- null이 관찰되거나 누락된 필드는 옵셔널 프로퍼티가 됩니다. 알 수 없거나 타입이 섞인 값에는 Codable JSONValue enum을 사용하며, 이 enum은 참조될 때만 추가됩니다.
- JSONDecoder로 바로 쓸 수 있나요?
- 네. 생성된 구조체를 프로젝트에 복사하고 Data에서 Root.self를 디코딩합니다. 먼저 옵셔널 필드와 날짜 타입을 검토하는 것이 좋습니다.
관련 도구
JSON을 Dart 모델로 변환, JSON을 Kotlin 데이터 클래스로 변환 및 JSON Schema 생성기.