타입 생성

JSON을 Swift Codable로 변환실제 응답으로 만드는 모델

서로 다른 두 레코드에서 어떤 속성이 옵셔널이 되는지 확인하세요.

JSON을 Swift Codable로 변환

JSON 입력

이 브라우저에서 파싱하고 생성합니다. 입력을 업로드하거나 저장하지 않습니다.

생성된 소스

생성 옵션

Int64 / Decimal. Swift 6.3.1, macOS 26에서 검증. makeJSONDecoder()를 쓰고 실제 배포 환경에서 재검증하세요.

루트 배열은 요소 Root을 정의합니다. [Root].self로 디코딩하세요.

구조체 2개 · 옵셔널 속성 2개

JSON을 Swift Codable로 변환할 때는 필드가 빠진 응답도 함께 넣어 보세요. 배열의 첫 항목만 보는 방식과 달리 모든 객체를 합쳐 실제로 관찰된 차이를 모델에 반영합니다.

Swift 구조체 초안은 API 계약 전체가 아닙니다. CodingKeys와 옵셔널 필드를 출발점으로 삼고, 필수 조건과 앞으로 추가될 필드는 앱에서 검토해야 합니다.

JSON을 Swift Codable로 변환하는 이유

여러 응답의 차이를 반영

JSON을 Swift Codable로 변환하면 같은 위치의 객체를 병합합니다. 다른 샘플에서 키가 없거나 null이면 옵셔널이 되고, 항상 존재하는 구체적인 값은 일반 속성으로 남습니다.

두 객체 카드가 하나의 모델로 합쳐지고 빈 슬롯이 옵셔널 속성을 나타냅니다.

날짜 추론을 직접 선택

기본값은 날짜처럼 보이는 문자열도 그대로 둡니다. ISO 추론을 켜면 조건에 맞는 타임스탬프만 Date와 해당 디코더로 연결하며 나머지는 String을 유지합니다.

타임스탬프 카드가 문자열 유지 경로와 시계로 변환되는 선택 경로로 나뉩니다.

읽기 규칙을 먼저 정하세요

01

다양한 객체를 모으기

루트는 객체 또는 비어 있지 않은 객체 배열이어야 합니다. 루트 배열은 요소 모델 Root를 생성하므로 [Root].self로 읽습니다. 중첩 배열도 모든 요소를 병합합니다.

02

키와 날짜 확인하기

snake_case나 특수 키에는 CodingKeys를 유지하세요. 유효한 원래 이름 보존과 camelCase 중 선택합니다. 날짜 추론은 시간대가 있는 완전한 시각과 최대 세 자리 소수 초만 대상으로 합니다.

03

교체를 확인하고 내보내기

편집 후 350ms에 자동 생성합니다. 끄면 버튼이나 Ctrl/Cmd+Enter를 사용합니다. 변경 즉시 오래된 결과의 내보내기가 잠깁니다. 예제와 지우기는 문자 수 미리보기를 거쳐 적용하며 한 번 되돌릴 수 있습니다.

파일에 포함되는 동작

한 파일의 Codable 모델

JSON을 Swift Codable로 변환한 결과는 var 속성과 구조체입니다. 비어 있지 않은 중첩 객체는 보조 구조체, 빈 객체는 사전, 혼합 데이터는 자체 재귀 JSONValue 열거형을 사용합니다. Any에 의존하지 않습니다.

원래 숫자 토큰 사용

모든 정수 표기가 부호 있는 64비트에 들어가면 Int64를 씁니다. 소수, 지수, 큰 정수 또는 이들이 섞인 숫자 그룹은 Foundation.Decimal입니다. 브라우저는 중간에 JavaScript Number로 바꾸지 않습니다.

익숙한 옵셔널 의미

관찰 모드는 누락 또는 null인 속성을 옵셔널로 만들고 전체 모드는 모든 속성을 대상으로 합니다. 합성 Codable은 누락과 null을 모두 nil로 읽으며, 인코딩할 때 보통 nil 속성을 생략합니다.

디코더 설정 포함

makeJSONDecoder()는 기본 키 전략을 유지합니다. Date가 있으면 소수 초가 있는 ISO8601DateFormatter와 없는 형식을 차례로 시도합니다. ISO 텍스트로 내보내려면 JSONEncoder의 날짜 전략은 별도로 설정해야 합니다.

배포 전 확인할 한계

스키마 검증기는 아닙니다
JSON Schema, OpenAPI, enum 추측, class, Core Data, SwiftData 또는 네트워크 코드를 생성하지 않습니다. 합성 디코딩은 모르는 키를 무시합니다. 추론 시 달력 검사가 있어도 생성된 날짜 헬퍼가 업무 검증기는 아닙니다.
보수적인 숫자 예산
앞뒤 0을 제거한 유효 숫자 38자리, 원래 지수 −128~127, 원래 지수에서 소수 자릿수를 뺀 값 −128 이상, 정규화 차수 127 이하만 허용합니다. 혼합 값에도 적용되며 0도 원래 표기 조건을 검사합니다.
실제 OS에서 검증하세요
Swift 6.3.1과 macOS 26에서 컴파일과 숫자 왕복을 검사했고 Swift 5 언어 모드도 사용했습니다. 오래된 컴파일러 테스트를 뜻하지 않습니다. 예전 Foundation은 Decimal 정밀도가 달라질 수 있습니다. 1.0과 1e0 같은 표기 자체는 보존하지 않습니다.
Date는 시점만 보관
정상 날짜와 시각, 시간대, 최대 세 자리 소수 초가 필요하며 같은 위치의 모든 null 아닌 문자열이 조건을 만족해야 합니다. 날짜만 있는 값, 시간대 없음, 잘못된 날짜와 더 정밀한 값은 String입니다. 원래 시간대와 형식은 사라집니다. 연도는 1583~9999로 제한합니다. 이전 시각은 역사적 달력 오차를 피하도록 String으로 남기며 생성 헬퍼도 1583년 이전을 거부합니다.
키의 구분을 유지
CodingKeys를 끄면 이름 변경이 필요한 키는 오류입니다. 예약어, 이름 충돌과 CodingKeys 속성은 안전하게 바꿉니다. 키와 값의 단독 서로게이트 및 한 객체나 병합 모델에서 NFC가 같아지는 서로 다른 키는 거부합니다.
엄격한 입력과 크기 제한
주석, 후행 쉼표, 중복 키, 자동 복구, 파일 가져오기, URL 요청이나 브라우저 Swift 실행은 없습니다. 입력 500,000자, 노드 50,000개, 깊이 40, 병합 객체당 100필드, 200구조체, 키·숫자당 1,000자, 출력 1,000,000자로 제한합니다.

JSON을 Swift Codable로 변환 관련 질문

여기에서 생성한 코드를 컴파일하나요?

이 페이지는 소스만 생성합니다. JSON을 Swift Codable로 변환하는 기능의 개발 검증에서는 실제 Swift 컴파일러를 사용했지만 브라우저에서 사용자 코드를 실행하지 않습니다. 다운로드 후 목표 프로젝트에서 확인하세요.

누락된 필드와 null 필드는 어떻게 처리하나요?

기본 추론에서 둘 다 옵셔널이 됩니다. 합성 Codable은 nil로 읽고 인코딩 시 보통 생략합니다. 누락, null, 값의 세 상태를 구분해야 한다면 직접 Codable 구현을 추가해야 합니다.

유효하지 않은 식별자는 어떻게 되나요?

camelCase 또는 유효한 원래 이름 유지 정책에 따라 정리합니다. 특수문자, 예약어와 충돌은 이름을 바꾸고 CodingKeys에 원래 키를 남깁니다. 매핑을 끈 상태에서 변경이 필요하면 오류를 표시합니다.

중첩 JSON 객체는 별도 구조체가 되나요?

비어 있지 않은 객체에는 보조 구조체를 만듭니다. 배열은 전체 요소를 합치며 빈 객체에는 사전을 사용합니다. 혼합 타입은 Codable을 따르는 재귀 JSONValue로 표현합니다.

ISO 8601 날짜의 소수 초를 디코딩하려면 어떻게 하나요?

ISO 추론은 최대 세 자리 소수 초를 인식합니다. makeJSONDecoder()가 소수 초 유무를 차례로 처리합니다. 더 정밀한 샘플은 문자열로 남기며 다시 인코딩할 날짜 형식은 따로 지정합니다.

개선할 추론 사례가 있나요?

빠진 필드가 있는 응답도 시험하세요

JSON을 Swift Codable로 변환한 소스를 내려받아 실제 배포 시스템에서 숫자, null, 중첩 객체의 디코딩을 확인하세요.