다양한 객체를 모으기
루트는 객체 또는 비어 있지 않은 객체 배열이어야 합니다. 루트 배열은 요소 모델 Root를 생성하므로 [Root].self로 읽습니다. 중첩 배열도 모든 요소를 병합합니다.
타입 생성
서로 다른 두 레코드에서 어떤 속성이 옵셔널이 되는지 확인하세요.
이 브라우저에서 파싱하고 생성합니다. 입력을 업로드하거나 저장하지 않습니다.
루트 배열은 요소 Root을 정의합니다. [Root].self로 디코딩하세요.
구조체 2개 · 옵셔널 속성 2개
JSON을 Swift Codable로 변환할 때는 필드가 빠진 응답도 함께 넣어 보세요. 배열의 첫 항목만 보는 방식과 달리 모든 객체를 합쳐 실제로 관찰된 차이를 모델에 반영합니다.
Swift 구조체 초안은 API 계약 전체가 아닙니다. CodingKeys와 옵셔널 필드를 출발점으로 삼고, 필수 조건과 앞으로 추가될 필드는 앱에서 검토해야 합니다.
JSON을 Swift Codable로 변환하면 같은 위치의 객체를 병합합니다. 다른 샘플에서 키가 없거나 null이면 옵셔널이 되고, 항상 존재하는 구체적인 값은 일반 속성으로 남습니다.
기본값은 날짜처럼 보이는 문자열도 그대로 둡니다. ISO 추론을 켜면 조건에 맞는 타임스탬프만 Date와 해당 디코더로 연결하며 나머지는 String을 유지합니다.
루트는 객체 또는 비어 있지 않은 객체 배열이어야 합니다. 루트 배열은 요소 모델 Root를 생성하므로 [Root].self로 읽습니다. 중첩 배열도 모든 요소를 병합합니다.
snake_case나 특수 키에는 CodingKeys를 유지하세요. 유효한 원래 이름 보존과 camelCase 중 선택합니다. 날짜 추론은 시간대가 있는 완전한 시각과 최대 세 자리 소수 초만 대상으로 합니다.
편집 후 350ms에 자동 생성합니다. 끄면 버튼이나 Ctrl/Cmd+Enter를 사용합니다. 변경 즉시 오래된 결과의 내보내기가 잠깁니다. 예제와 지우기는 문자 수 미리보기를 거쳐 적용하며 한 번 되돌릴 수 있습니다.
JSON을 Swift Codable로 변환한 결과는 var 속성과 구조체입니다. 비어 있지 않은 중첩 객체는 보조 구조체, 빈 객체는 사전, 혼합 데이터는 자체 재귀 JSONValue 열거형을 사용합니다. Any에 의존하지 않습니다.
모든 정수 표기가 부호 있는 64비트에 들어가면 Int64를 씁니다. 소수, 지수, 큰 정수 또는 이들이 섞인 숫자 그룹은 Foundation.Decimal입니다. 브라우저는 중간에 JavaScript Number로 바꾸지 않습니다.
관찰 모드는 누락 또는 null인 속성을 옵셔널로 만들고 전체 모드는 모든 속성을 대상으로 합니다. 합성 Codable은 누락과 null을 모두 nil로 읽으며, 인코딩할 때 보통 nil 속성을 생략합니다.
makeJSONDecoder()는 기본 키 전략을 유지합니다. Date가 있으면 소수 초가 있는 ISO8601DateFormatter와 없는 형식을 차례로 시도합니다. ISO 텍스트로 내보내려면 JSONEncoder의 날짜 전략은 별도로 설정해야 합니다.
이 페이지는 소스만 생성합니다. JSON을 Swift Codable로 변환하는 기능의 개발 검증에서는 실제 Swift 컴파일러를 사용했지만 브라우저에서 사용자 코드를 실행하지 않습니다. 다운로드 후 목표 프로젝트에서 확인하세요.
기본 추론에서 둘 다 옵셔널이 됩니다. 합성 Codable은 nil로 읽고 인코딩 시 보통 생략합니다. 누락, null, 값의 세 상태를 구분해야 한다면 직접 Codable 구현을 추가해야 합니다.
camelCase 또는 유효한 원래 이름 유지 정책에 따라 정리합니다. 특수문자, 예약어와 충돌은 이름을 바꾸고 CodingKeys에 원래 키를 남깁니다. 매핑을 끈 상태에서 변경이 필요하면 오류를 표시합니다.
비어 있지 않은 객체에는 보조 구조체를 만듭니다. 배열은 전체 요소를 합치며 빈 객체에는 사전을 사용합니다. 혼합 타입은 Codable을 따르는 재귀 JSONValue로 표현합니다.
ISO 추론은 최대 세 자리 소수 초를 인식합니다. makeJSONDecoder()가 소수 초 유무를 차례로 처리합니다. 더 정밀한 샘플은 문자열로 남기며 다시 인코딩할 날짜 형식은 따로 지정합니다.
개선할 추론 사례가 있나요?
JSON을 Swift Codable로 변환한 소스를 내려받아 실제 배포 시스템에서 숫자, null, 중첩 객체의 디코딩을 확인하세요.