Tool Kumar 도구

JSON을 Swift 모델로 변환

Codable을 준수하는 Swift 구조체를 생성합니다. 프로퍼티 이름이 JSON과 다르면 변환기가 CodingKeys를 추가하므로, user-id 같은 키도 userId로 디코딩됩니다.

도구 사용 방법

  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"
    }
  ]
}

출력

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 생성기.