F# to JSON 변환기
F# record 또는 union을 붙여 넣으세요. 깔끔한 JSON이 돌아옵니다.
이 도구가 하는 일
F# 레코드나 판별 공용체가 있고, 테스트나 HTTP 호출, .NET 연동을 위해 JSON 페이로드가 필요하다면, 손으로 바디를 짜는 건 번거롭습니다. 여기에 F#을 붙여 넣으면 유효한 JSON이 돌아옵니다. 레코드 하나, 몇 개의 케이스를 가진 유니언, 혹은 모듈 전체 — 흐름은 같습니다.
변환기는 F# 코드에서 가장 많이 쓰이는 JSON 라이브러리들의 동작을 따릅니다. F# 컨버터를 붙인 System.Text.Json, Newtonsoft.Json, 그리고 Thoth.Json 모두 레코드 필드를 JSON 키로 바꿉니다 — 여기서도 똑같이 동작합니다. int, float, decimal, bigint는 JSON 숫자가 됩니다. bool은 그대로 불리언입니다. DateTime과 DateTimeOffset은 ISO-8601 문자열로 나갑니다. string option은 Some x일 때 값을, None일 때 null을 내보냅니다.
판별 공용체는 판별자와 함께 직렬화되어 JSON이 깔끔하게 왕복 변환됩니다. type Status = | Paid | Refunded of Guid는 {"Case":"Refunded","Fields":["..."]} 형태로, 혹은 JsonUnionCase 속성이 있으면 그에 맞춘 태그 형식으로 나갑니다 — dotnet/fsharp 팀의 직렬화기가 생성하는 형태와 동일합니다. lists, arrays, sequences는 모두 JSON 배열이 됩니다. Map<string, 'T>는 JSON 객체가, tuples는 JSON 배열이 됩니다. F# 관용적인 모델링을 더 깊이 파보고 싶다면 fsharpforfunandprofit.com을 북마크해 두세요.
사용 방법
세 단계입니다. 레코드 하나를 붙여 넣든 Domain.fs 전체를 붙여 넣든 동일하게 동작합니다.
F#을 붙여 넣으세요 (또는 샘플을 사용해 보세요)
왼쪽 에디터에 F#을 그대로 붙여 넣으세요. 레코드, 판별 공용체, { ... } 문법을 쓰는 레코드 인스턴스, 또는 여러 타입 — 모두 괜찮습니다. 현실적인 예시를 보려면 샘플 불러오기를 클릭하세요.
module, namespace, open, 속성 선언은 그대로 두어도 됩니다 — 파서는 필요 없는 건 무시합니다. 공식 F# 언어 레퍼런스가 좋은 참고 자료입니다.
변환을 누르세요
초록색 변환 버튼을 클릭하세요. 도구가 F#을 읽고 모든 레코드 필드와 유니언 케이스를 순회하여 JSON을 한 번에 만들어냅니다. 실행 중에는 짧게 로딩 인디케이터가 나타납니다.
JSON을 복사하세요
오른쪽 패널이 들여쓰기된 JSON으로 채워집니다. Giraffe나 Saturn 요청, xUnit 픽스처, Fable 테스트, 또는 API 문서에 붙여 넣어 사용하세요.
실제로 유용한 순간
Giraffe / Saturn 테스트 픽스처
테스트에서 Giraffe 엔드포인트로 POST할 JSON 바디가 필요할 때. 커맨드 레코드를 붙여 넣고 페이로드를 받아 spec에 넣기만 하면 됩니다.
Fable 프런트엔드 목
F# 도메인 레코드를 Fable이나 Elmish 프런트엔드의 목 JSON 응답으로 바꿉니다 — 타입과 어긋나는 수작업 JS 객체와는 이제 안녕입니다.
Azure Functions 페이로드
F#으로 작성한 Azure Function을 호출하기 위한 JSON 바디를 만듭니다 — 입력 형태를 반복적으로 수정할 때 유용합니다.
타입과 일치하는 문서
실제 레코드에서 바로 API 문서나 README용 JSON 샘플을 만드세요 — 문서가 뒤처질 일이 없습니다.
자주 묻는 질문
Option 타입은 어떻게 직렬화되나요?
Some x는 값 x가 되고, None은 JSON의 null이 됩니다. Thoth.Json과 System.Text.Json의 F# 컨버터 기본 동작과 일치합니다.
판별 공용체는 JSON에서 어떻게 보이나요?
기본적으로는 {"Case":"CaseName","Fields":[...]} — F#으로 왕복 변환되는 태그 포맷입니다. 코드가 커스텀 속성(JsonUnionCase 등)을 사용하면 변환기가 이를 존중하여 맞춤 형식을 내보냅니다.
DateTime, DateTimeOffset, Guid는 어떻게 처리되나요?
DateTime과 DateTimeOffset은 ISO-8601 문자열로 나옵니다. Guid는 표준 8-4-4-4-12 16진 문자열입니다. System.Text.Json의 기본 동작과 같습니다.
lists, arrays, maps는 어떻게 매핑되나요?
list, array, seq는 모두 JSON 배열이 됩니다. Map<string, 'T>는 JSON 객체가 됩니다. tuples는 혼합 타입의 JSON 배열이 되며, .NET 직렬화기가 만드는 형태와 동일합니다.
모듈 전체를 붙여 넣어도 되나요?
네. 최상위 레코드와 유니언은 각각 독립된 JSON 항목이 되고, 중첩 레코드는 확장됩니다. 샘플 값을 만드는 let 바인딩도 함께 인식됩니다 — 테스트 데이터 모듈이 있을 때 유용합니다.
제 코드가 저장되나요?
F#은 변환을 위해 백엔드로 전송되지만 저장하지 않습니다 — 페이로드를 로그에도 남기지 않습니다. 민감한 도메인 코드는 붙여 넣기 전에 한 번 확인하세요.
함께 쓰면 좋은 도구
F# to JSON은 하나의 조각일 뿐입니다. 아래 도구들과 잘 어울립니다: