C# to JSON 변환기
C# 클래스나 객체를 붙여 넣으면 깔끔한 JSON이 나옵니다.
이 도구가 하는 일
테스트나 API 호출, 문서 작업 때문에 C# 클래스와 똑같은 모양의 JSON 페이로드를 손으로 만들어 본 적이 있다면, 이게 얼마나 성가신 일인지 아실 겁니다. 여기에 C# 코드를 붙여 넣기만 하면 유효한 JSON이 그대로 나옵니다. 다시 쓸 필요가 없습니다. 객체 이니셜라이저 하나든, 여러 클래스가 들어 있는 모델 파일 전체든, 깊게 중첩된 구조든 결과는 같습니다. 모든 필드가 보존된 완전한 JSON 문서가 나옵니다.
단순한 문자열 치환이 아닙니다. 이 변환기는 C#이 런타임에 실제로 어떻게 직렬화되는지 이해합니다. 49.99m 같은 decimal 접미사는 m이 떨어져 JSON 숫자가 되고, DateTime과 DateTimeOffset은 RFC 8259에 따라 ISO-8601 문자열로 나옵니다. Guid는 표준 16진 문자열이 되고, null 값을 가진 nullable은 null이 됩니다. 컬렉션은 System.Text.Json이나 Newtonsoft.Json이 만들어낼 결과를 그대로 따릅니다. List<T>와 배열은 JSON 배열로, Dictionary<K,V>는 JSON 객체로 변환됩니다.
직렬화 어트리뷰트도 존중합니다. [JsonPropertyName("x")]은 키 이름을 바꾸고, [JsonIgnore]는 해당 프로퍼티를 제외합니다. 여러 클래스를 한꺼번에 붙여 넣으면 각 클래스가 JSON의 최상위 항목으로 나오며, 중첩 타입은 풀어지고 베이스 클래스에서 상속받은 프로퍼티까지 포함됩니다. 조용히 사라지는 건 없습니다.
사용 방법
세 단계면 됩니다. 다섯 줄이든 모델 파일 전체든 똑같이 동작합니다.
C# 코드 붙여 넣기 (샘플을 써봐도 좋습니다)
왼쪽 편집기에 C# 코드를 그대로 붙여 넣으세요. 객체 이니셜라이저, 완전한 클래스 정의, 여러 클래스, 중첩 구조 모두 괜찮습니다. 실제 예시를 먼저 보고 싶다면 Load Sample을 눌러 보세요.
코드를 다듬을 필요는 없습니다. C# 문법, 접근 제한자, 어트리뷰트를 그대로 두고 그냥 붙여 넣으세요.
Convert 누르기
초록색 Convert 버튼을 누르세요. 도구가 C# 코드를 읽어 모든 클래스와 프로퍼티를 유지하며 한 번에 JSON을 만들어냅니다. 동작하는 동안 짧은 로딩 표시가 보입니다.
JSON 복사
오른쪽 패널에 들여쓰기된 MDN 호환 JSON이 채워집니다. 그대로 복사해서 API 요청, 테스트 픽스처, 설정 파일, 문서에 붙여 넣으면 됩니다.
실제로 쓸모 있는 순간들
API 픽스처 만들기
C# 요청 모델이 있고 Postman이나 curl에 넣을 JSON 페이로드가 필요할 때. 클래스를 붙여 넣고 JSON을 받아 바로 쓰면 됩니다.
설정 파일 초안 잡기
프로퍼티 40개짜리 Settings 클래스가 appsettings.json이나 설정 저장소에 바로 넣을 수 있는 JSON 템플릿이 됩니다. 손으로 쓰는 보일러플레이트는 끝입니다.
문서와 코드 동기화
실제 모델에서 바로 JSON 예시를 뽑아 README, API 레퍼런스, OpenAPI 스펙에 넣을 수 있습니다. 문서가 코드와 어긋날 일이 없습니다.
테스트 데이터 시드
유닛 테스트의 객체 이니셜라이저를 JSON 시드 파일로 바꿔 통합 테스트, 목 서버, DB 픽스처에 쓸 수 있습니다.
자주 묻는 질문
클래스 여러 개를 한 번에 붙여 넣어도 되나요?
네, 파일 전체를 붙여 넣어도 됩니다. 최상위 클래스마다 자기 키로 JSON에 나오고, 중첩 타입은 풀어지고 베이스 클래스에서 상속받은 프로퍼티도 포함됩니다. 빠지는 건 없습니다.
[JsonPropertyName]이나 [JsonIgnore] 같은 어트리뷰트를 지원하나요?
네. [JsonPropertyName("x")]과 [JsonProperty("x")]는 JSON 키 이름을 바꾸고, [JsonIgnore]는 해당 프로퍼티를 결과에서 제외합니다. System.Text.Json의 동작과 동일합니다.
decimal, DateTime, Guid 같은 흔한 C# 타입은 어떻게 처리하나요?
decimal(49.99m)은 접미사가 빠지면서 JSON 숫자가 됩니다. DateTime과 DateTimeOffset은 ISO-8601 문자열로 나옵니다. Guid는 표준 8-4-4-4-12 16진 문자열입니다. TimeSpan은 기간 문자열이 됩니다. null 값을 가진 nullable은 JSON null이 되고, 그렇지 않으면 내부 타입이 직렬화됩니다.
중첩 클래스, List, Dictionary는요?
List<T>, 배열, HashSet<T>, IEnumerable<T>은 모두 JSON 배열이 됩니다. Dictionary<K,V>는 JSON 객체가 됩니다. Order 안에 들어간 Address 같은 중첩 객체 이니셜라이저는 모든 필드를 그대로 유지한 채 중첩 JSON 객체로 풀어집니다.
제 코드가 저장되나요?
변환을 위해 백엔드로 전송되지만 저장하지 않습니다. 페이로드를 로그에 남기지 않습니다. 온라인 도구를 쓸 때 늘 그렇듯, 정말 민감한 코드라면 붙여 넣기 전에 한 번 확인해 보세요.
C# 코드에 메서드, 델리게이트, IntPtr 같은 특이한 게 있으면요?
그런 것들은 변환 전체를 실패시키지 않고 null로 나옵니다. 모델의 나머지 부분은 정상적으로 나온다는 뜻입니다. 코드 자체에 문법 오류가 있다면 눈에 띄는 것부터 먼저 고치세요. 파서가 관대하긴 해도 만능은 아닙니다.
함께 쓰면 좋은 도구들
C# to JSON은 퍼즐의 한 조각일 뿐입니다. 같이 쓰면 좋은 도구들을 모았습니다.