Objective-C to JSON 변환기
Objective-C의 dictionary, array, 클래스를 붙여넣으세요. JSON으로 돌려드립니다.
이 도구가 하는 일
Objective-C의 NSDictionary 리터럴, 모델이 담긴 NSArray, 아니면 @property 선언이 잔뜩 붙은 클래스 전체가 있고 그걸 JSON으로만 보고 싶다면 — 바로 이 도구가 해줍니다. NSJSONSerialization을 호출하는 일회용 프로그램을 따로 짤 필요가 없습니다.
결과물은 동일한 인메모리 객체 그래프에 대해 [NSJSONSerialization dataWithJSONObject:options:error:]가 내놓는 것과 일치합니다. NSDictionary는 JSON 객체로, NSArray는 JSON 배열로, NSString은 문자열 그대로, NSNumber는 내부 타입에 따라 숫자 또는 불리언으로(@YES/@NO vs @42), NSNull / [NSNull null]은 null로 갑니다. NSDate는 ISO-8601 문자열로 나옵니다 — 대부분의 iOS 앱이 자리 잡는 관행입니다.
클래스 전체(@interface Order : NSObject ... @end와 @implementation, 또는 프로퍼티 대입이 붙은 [[Order alloc] init] 리터럴)를 붙여넣으면, 변환기가 각 @property를 읽어 그 키들로 JSON 객체를 만듭니다. 중첩 클래스 — Order 안의 Address 프로퍼티 — 는 중첩 JSON 객체로 펼쳐집니다. 여러 클래스를 한 번에 붙여넣으면 최상위 항목이 여러 개 나오게 됩니다.
사용 방법
세 단계면 끝입니다. dictionary 리터럴 하나든, 클래스로 꽉 찬 파일이든 동일하게 동작합니다.
Objective-C 붙여넣기 (또는 샘플 열기)
왼쪽 에디터에 코드를 던져 넣으세요. NSDictionary 리터럴, NSArray, @property가 붙은 클래스, 대입이 포함된 클래스 인스턴스 — 뭐든 괜찮습니다.
@ 접두사, 포인터 별표, 대괄호 문법은 그대로 두세요. 파서가 @{...}, @[...], @"..."를 이해합니다.
변환 누르기
초록색 변환 버튼을 클릭하세요. 도구가 모든 dictionary, array, property, 값을 읽어 한 번의 패스로 JSON을 만듭니다.
JSON 복사
오른쪽 패널에 들여쓰기된 JSON이 나옵니다. 테스트 픽스처, API 목, 문서에 바로 쓸 수 있는 상태입니다. 복사해서 가세요.
진짜로 도움이 되는 순간
iOS API 응답 픽스처
유닛 테스트에서 <code>dataWithJSONObject:</code>에 넘길 dictionary를 붙여넣고, 결과를 .json 픽스처로 저장하세요. 테스트가 결정적으로 유지됩니다.
레거시 Obj-C 모델 문서화
오래된 iOS 코드베이스에 OpenAPI 스펙으로 기록해야 할 Obj-C 클래스들이 있을 때. 각 모델을 JSON으로 변환해 스키마 모양을 추측 없이 얻으세요.
Swift 이식
Swift화 작업의 일부로, 각 Obj-C 클래스가 함축하는 JSON 모양이 필요한 경우. Codable struct를 쓰기 전 레퍼런스를 빠르게 뽑는 방법입니다.
백엔드 핸드오프
POST 직전의 NSDictionary가 있을 때. 붙여넣어 요청이 나가기 전에 JSON 모양이 API 계약과 맞는지 한 번 더 확인하세요.
자주 묻는 질문
NSJSONSerialization 출력과 일치하나요?
네 — 그게 목표입니다. NSDictionary/NSArray/NSString/NSNumber/NSNull은 표준 방식으로 매핑됩니다. NSDate는 ISO-8601 문자열로 나갑니다(NSJSONSerialization 자체는 NSDate를 다루지 않고 — 이 도구가 가장 널리 쓰이는 관행을 따릅니다).
@property 선언이 있는 클래스를 붙여넣어도 되나요?
네. 각 @property가 JSON 객체의 키가 되고, 타입이 값을 어떻게 내놓을지 결정합니다(예: NSString * → 문자열, NSNumber * → 숫자). 샘플에 프로퍼티 대입까지 포함돼 있으면 그 값이 JSON에 들어가고, 없으면 플레이스홀더 값이 들어갑니다.
BOOL과 NSNumber는 어떻게 구분되나요?
@YES / @NO와 [NSNumber numberWithBool:]은 JSON의 true/false를 내보냅니다. 정수·부동소수점 NSNumber 리터럴(@42, @3.14)은 JSON 숫자를 내보냅니다 — NSJSONSerialization이 인코딩된 타입에서 구분할 수 있을 때 적용하는 규칙과 같습니다.
중첩 클래스와 객체 배열은 어떻게 되나요?
중첩된 NSDictionary와 NSArray는 완전히 펼쳐집니다. 다른 클래스를 프로퍼티로 가진 클래스는 중첩 JSON 객체로 나옵니다. 모델 인스턴스의 NSArray는 객체로 이루어진 JSON 배열이 되며, 인스턴스 하나당 항목 하나입니다.
제 코드는 저장되나요?
코드는 변환을 위해 백엔드로 전송되고 저장되지 않습니다 — 페이로드를 로깅하지 않습니다. 그래도 붙여넣기 전에 샘플의 실제 키나 토큰은 가리는 것을 권장드립니다.
NSDate, NSURL, 다른 Foundation 타입도 다루나요?
NSDate는 ISO-8601 문자열이 됩니다. NSURL은 absoluteString이 됩니다. NSData는 base64가 됩니다. 대부분의 iOS 팀이 직렬화할 때 쓰는 관행이며, Foundation에 문서화되어 있습니다.
같이 쓰면 좋은 도구
Objective-C to JSON은 툴박스의 다른 도구들과도 잘 어울립니다.