Ruby to JSON 변환기
Ruby 클래스, 해시, 객체를 붙여넣으세요. 깔끔한 JSON을 돌려드립니다.
이 도구가 하는 일
속성이 잔뜩 달린 Ruby 클래스가 있고, 테스트나 API 호출, 픽스처용 JSON 페이로드가 필요할 때 해시를 손으로 만드는 건 꽤 번거로운 일입니다. 여기에 Ruby를 붙여넣으면 모든 필드가 보존된 유효한 JSON이 나옵니다. Order 클래스 하나든, 주소를 포함한 중첩된 Customer든, Rails의 모델 정의 파일 전체든, 런타임에 to_json이 내놓는 결과와 일치합니다.
이 변환기는 Ruby가 실제로 어떻게 직렬화하는지를 이해합니다. json 표준 라이브러리는 :symbol 키를 문자열로 바꾸고(JSON 키는 문자열만 허용하기 때문입니다), nil은 null이 되고, Time/Date는 ISO-8601 문자열로 나옵니다. 심볼 키 해시와 문자열 키 해시는 모두 정규화되고, 타입이 섞인 배열도 그대로 유지됩니다. 중첩된 인스턴스 — 예를 들어 Order 안의 Address — 는 문자열화되지 않고 중첩된 JSON 객체로 펼쳐집니다. 자세한 내용은 ruby-doc.org에서 확인할 수 있습니다.
gem이나 Rails 앱의 파일 전체를 붙여넣으면, 최상위 클래스마다 각각의 JSON 항목으로 나오고 initialize에서 설정한 인스턴스 변수도 출력에 포함됩니다. attr_accessor, attr_reader, 그리고 단순 @ivars까지 모두 잡아냅니다. Struct나 OpenStruct를 만나면 멤버를 같은 방식으로 처리합니다. 메서드는 건너뛰고 데이터만 JSON에 들어갑니다.
사용 방법
세 단계입니다. 몇 줄을 붙이든 models/ 폴더 전체를 붙이든 동작은 같습니다.
Ruby 붙여넣기 (또는 샘플 시도)
왼쪽 에디터에 Ruby를 그대로 붙여넣으세요. 클래스 정의, 해시 리터럴, 여러 클래스, .new 인스턴스 — 모두 괜찮습니다. 먼저 실제 예시를 보고 싶다면 샘플 불러오기를 클릭하세요.
코드를 다듬을 필요는 없습니다 — Ruby 문법, require 줄, 주석까지 있는 그대로 두세요. 데이터가 아닌 부분은 파서가 무시합니다. 예외 상황은 JSON 표준 라이브러리 문서를 참고하면 좋습니다.
변환 누르기
초록색 변환 버튼을 클릭하세요. 도구가 Ruby를 읽고 모든 클래스와 속성을 보존한 채 한 번에 JSON을 만들어냅니다. 진행 중에는 짧은 로딩 표시가 나옵니다.
JSON 복사
오른쪽 패널이 들여쓰기된 스펙 준수 JSON으로 채워집니다. Postman 요청, 테스트 픽스처, Rails seeds 파일, API 문서 등에 그대로 복사하세요.
이럴 때 진짜 편합니다
RSpec용 테스트 픽스처
속성 20개짜리 Order 모델이 있고, 외부 서비스를 스텁하기 위한 JSON이 필요할 때. 클래스를 붙여넣고 페이로드를 받아 spec에 넣으면 끝입니다.
Rails 앱 시딩
무더기로 쌓인 <code>Product.new(...)</code> 줄을 db/seeds용 또는 스테이징 데이터 로더용 JSON 시드 파일로 바꾸세요 — 손으로 칠 필요 없습니다.
모델과 일치하는 문서
Ruby 클래스에서 바로 README나 API 레퍼런스용 JSON 예시를 생성하세요. 문서가 코드에서 벗어날 일이 없습니다.
직렬화 문제 디버깅
<code>to_json</code>이 이상하게 동작할 때, Ruby를 여기에 붙여 기대하는 JSON 모양을 확인하고 앱이 실제로 보내는 내용과 비교해보세요.
자주 묻는 질문
여러 클래스를 한 번에 붙여도 되나요?
네. 파일 전체를 붙여넣으세요. 최상위 클래스마다 각각의 JSON 항목으로 나오고, 중첩된 클래스는 중첩된 객체로 펼쳐집니다. 메서드는 무시되고 인스턴스 변수와 값만 출력에 들어갑니다.
심볼과 문자열 키는 어떻게 처리되나요?
JSON은 문자열 키만 허용하므로 :name은 "name"이 됩니다 — json 표준 라이브러리와 같은 동작입니다. 심볼 키와 문자열 키가 섞인 해시가 있다면 출력에서 둘 다 문자열로 정규화됩니다.
Time, Date, BigDecimal은요?
Time과 DateTime은 ISO-8601 문자열로 나옵니다. Date는 ISO 형식 날짜 문자열입니다. BigDecimal은 JSON 숫자가 됩니다. nil은 null입니다. Range와 정규식은 문자열화되며, 나머지 표준 타입은 Ruby 기본 to_json이 하는 방식대로 매핑됩니다.
Struct와 OpenStruct도 지원하나요?
네. 멤버가 :name, :price인 Struct는 해당 키를 가진 JSON 객체로 직렬화됩니다. OpenStruct도 마찬가지로 동적 속성을 잡아서 출력합니다.
제 코드가 저장되나요?
Ruby는 변환을 위해 백엔드로 전송되지만 저장되지 않습니다 — 페이로드를 로그로 남기지 않습니다. 온라인 도구를 쓸 때 늘 그렇듯, 정말 민감한 코드라면 먼저 한 번 살펴보고 사용하세요.
코드에 메서드나 블록이 있으면 어떻게 되나요?
메서드와 블록은 건너뜁니다 — 데이터가 아니기 때문입니다. 클래스 이름, initialize의 인스턴스 변수, 리터럴 값만 JSON에 들어가므로 모델의 나머지 부분은 깔끔하게 통과합니다.
함께 쓰면 좋은 도구
Ruby to JSON은 한 조각입니다. 이 도구들과 잘 어울립니다: