왼쪽에 Swift를 붙여넣고 "변환"을 누르세요 — JSON으로 변환해 드립니다Swift 코드 붙여넣기

이 도구가 하는 일

Swiftstruct를 정의하고 Codable을 채택했는데, playground나 시뮬레이터를 띄우지 않고 JSON만 뽑고 싶었던 적 있으시죠. 이 도구가 바로 그 일을 해줍니다. Swift를 여기에 붙여넣으면 JSONEncoder, Xcode, Swift Package Manager를 건드리지 않고도 유효한 JSON을 돌려받을 수 있습니다. 단일 struct 인스턴스든, 여러 타입이 들어 있는 파일 전체든, 중첩 배열과 Optional이 섞인 코드든 결과는 똑같습니다. 모든 프로퍼티가 보존된 깔끔한 JSON 문서가 나옵니다.

변환기는 Swift 값이 JSONEncoder를 통해 실제로 직렬화되는 방식을 그대로 따릅니다. String, Int, Double, Bool은 대응하는 JSON 타입으로 매핑됩니다. [Item] 배열은 JSON 배열이 되고, [String: V] 딕셔너리는 JSON 객체가 됩니다. nilOptional<T>는 JSON null이 됩니다(인코더 전략에 따라 생략될 수도 있습니다). UUID는 표준 16진 문자열, Date는 ISO-8601 문자열, URL은 문자열로 나옵니다. raw value를 가진 enum은 그 값을 그대로 내보냅니다 — Foundation.JSONEncoder와 같은 동작입니다.

커스텀 CodingKeys도 그대로 반영됩니다. JSON용으로 프로퍼티명을 바꿔뒀다면(case shippingAddress = "shipping_address"), 출력에서도 바뀐 키가 쓰입니다. 중첩된 Codable 타입은 인라인으로 펼쳐집니다. struct를 여러 개 한꺼번에 붙여넣으면 각각이 출력의 최상위 엔트리가 됩니다. Swift가 JSON을 어떻게 모델링하는지 더 깊게 보고 싶다면 apple/swift에 소스가 있고, Codable 프로토콜에 대한 읽기 쉬운 설명은 Hacking with Swift에 잘 정리되어 있습니다.

사용법

3단계면 끝납니다. struct 인스턴스 하나든, 모델 파일 하나 통째로든 방법은 같습니다.

1

Swift 붙여넣기(또는 샘플 불러오기)

왼쪽 에디터에 Swift를 그대로 붙여넣으세요. struct, class, 연관값이 있는 enum, 여러 타입, 중첩 배열과 딕셔너리 — 전부 괜찮습니다. 현실적인 예제를 먼저 보고 싶으면 샘플 불러오기를 클릭하세요.

import Foundation이나 @available 속성을 굳이 지울 필요 없습니다. Swift 문법을 그대로 두세요 — 파서가 알아서 처리합니다.

2

변환 버튼 누르기

녹색 변환 버튼을 클릭합니다. Swift를 읽어 모든 프로퍼티와 중첩 타입을 보존한 채 JSON을 한 번에 내보냅니다. 처리 중에는 짧은 로딩 표시가 뜹니다.

3

JSON 복사하기

오른쪽 패널에 들여쓰기된 JSON이 채워집니다. URLSession 테스트, MockURLProtocol 픽스처, OpenAPI 예제, REST 클라이언트 어디든 그대로 복사해 쓰세요. 이게 전부입니다.

이럴 때 정말 유용합니다

iOS API 픽스처

<code>URLSession</code> 호출용 요청 struct가 있고 Postman이나 테스트에 쓸 JSON 페이로드가 필요한 상황. struct를 붙여넣고 JSON을 받아서 바로 넘어가면 됩니다.

Mock 서버 응답

응답용 <code>Codable</code> 타입을 Mock 서버나 <code>MockURLProtocol</code>, 녹화된 응답 파일에 바로 넣을 JSON으로 변환하세요. <code>JSONEncoder</code>를 호출할 필요가 없습니다.

Vapor / SwiftNIO 백엔드 테스트

<code>Content</code> 타입이 20개쯤 되는 Vapor 서비스. encode 호출을 한 줄도 쓰지 않고 통합 테스트용 JSON 시드 파일을 생성할 수 있습니다.

문서와 OpenAPI 예제

실제 모델에서 곧바로 OpenAPI 스펙이나 API 레퍼런스용 JSON 예제를 뽑아낼 수 있어서, 문서가 항상 최신 상태로 유지됩니다.

자주 묻는 질문

타입이 Codable을 반드시 채택해야 하나요?

도구가 동작하려고 실제로 코드 상에서 채택되어 있을 필요는 없습니다 — 변환기는 타입의 모양을 읽어 JSON을 직접 만들어 냅니다. 실제 앱에서는 Codable(최소 Encodable)이 런타임에 JSONEncoder를 통해 같은 결과를 얻는 방법입니다.

커스텀 CodingKeys도 인식하나요?

네. 타입에 enum CodingKeys: String, CodingKey가 커스텀 raw value와 함께 정의되어 있다면(case shippingAddress = "shipping_address"), 출력에서도 바뀐 키를 그대로 사용합니다.

Optional, Date, UUID는 어떻게 처리되나요?

nilOptional<T>는 JSON null이 됩니다. Date는 기본적으로 ISO-8601 문자열로 나옵니다(JSONEncoder.DateEncodingStrategy.iso8601와 동일). UUID는 표준 16진 문자열, URL은 문자열이 됩니다.

연관값이 있는 enum은요?

raw value를 가진 enum은 그 값을 그대로 내보냅니다. 연관값이 있는 enum은 태그가 붙은 객체 형태로 나옵니다 — 연관값이 있는 case를 인코딩할 때 Swift가 만들어내는 형태 그대로입니다.

붙여넣은 코드가 저장되나요?

코드는 변환을 위해 백엔드로 전송되지만 보관되지 않습니다 — 페이로드를 로깅하지 않습니다. 민감한 코드는 붙여넣기 전에 한 번 검토해 주세요.

SwiftUI 모델이나 property wrapper에도 동작하나요?

네 — @Published 같은 property wrapper는 내부 값으로 언래핑됩니다. @Published 프로퍼티를 가진 ObservableObject 클래스도 깔끔하게 직렬화됩니다. SwiftUI 전용 뷰 타입은 직렬화 대상 데이터가 아니지만, 뷰 뒤에 있는 모델은 얼마든지 변환 가능합니다.

함께 쓰면 좋은 도구

Swift to JSON은 퍼즐의 한 조각일 뿐입니다. 이 도구들과 함께 쓰면 더 편리합니다: