JSON을 C# 클래스로
JSON 샘플을 붙여넣으면 .cs 파일에 바로 붙여넣을 수 있는 C# POCO 클래스를 얻을 수 있습니다. 적절한 형식을 선택하고, 추가 클래스 정의가 필요한 중첩 객체를 처리하며, 널 허용 참조 형식을 지원하고, 프로젝트에 따라 System.Text.Json 또는 Newtonsoft.Json 특성을 출력합니다.
JSON을 C#으로 변환하는 방법
-
1
JSON 붙여넣기
샘플 하나면 충분합니다. 여러 샘플을 제공하면 널 허용 여부와 배열 요소 형식의 추론이 향상됩니다.
-
2
스타일 선택
System.Text.Json(.NET 6 이상) 또는 Newtonsoft.Json(레거시). camelCase JSON의 경우 PascalCase 속성 이름에 `[JsonPropertyName]`을 붙입니다.
-
3
대상 C# 버전 선택
레코드와 파일 범위 네임스페이스에는 C# 10 이상, 널 허용 참조 형식에는 C# 8, 최대한의 호환성을 위해서는 그 이전 버전을 사용합니다.
-
4
클래스 복사
루트 클래스 하나와 각 객체 형태에 대한 중첩 클래스가 모두 한 파일에 담겨 있어, 프로젝트에 바로 넣을 수 있습니다.
출력 예시
다음 입력에 대해:
{ "firstName": "Alice", "age": 30, "emails": ["a@a.com"], "address": { "city": "Madrid" } }
System.Text.Json 출력(C# 10 이상):
public class User
{
[JsonPropertyName("firstName")]
public string FirstName { get; set; } = default!;
[JsonPropertyName("age")]
public int Age { get; set; }
[JsonPropertyName("emails")]
public List<string> Emails { get; set; } = new();
[JsonPropertyName("address")]
public Address Address { get; set; } = default!;
}
public class Address
{
[JsonPropertyName("city")]
public string City { get; set; } = default!;
}
형식 매핑
| JSON | C# 형식 |
|---|---|
| 문자열 | string |
| 정수 | int(int.MaxValue를 초과하면 long) |
| 숫자(소수) | double(선택 시 decimal) |
| 불리언 | bool |
| null | object?(또는 같은 수준의 요소와 병합) |
| ISO-8601 날짜 | DateTime(또는 DateOnly) |
| GUID 형태의 문자열 | Guid |
| 문자열 배열 | List<string> |
| 객체 | 중첩 클래스 |
특성 옵션
- System.Text.Json(
[JsonPropertyName("foo")]). NET 6 이상 및 신규 프로젝트에 권장됩니다. - Newtonsoft.Json(
[JsonProperty("foo")]), 레거시 프로젝트나 Newtonsoft 고유 기능이 필요할 때 사용합니다. - 없음, 속성 이름이 JSON 키와 정확히 일치합니다(JSON 키가 이미 PascalCase인 경우에만 동작합니다).
흔한 실수
- 오버플로 가능성이 있는 필드에
int사용. JSON에int.MaxValue를 초과하는 값이 있으면long을 사용하세요. 생성기는 큰 값을 감지하면 자동으로 승격합니다. - 계산 속성에
[JsonIgnore]누락. 생성된 클래스에 헬퍼 속성을 추가한다면[JsonIgnore]로 표시하세요. 그렇지 않으면 출력 시 직렬화됩니다. - 문화권 독립적 파싱 잊기.
decimal필드는CultureInfo.InvariantCulture로 역직렬화해야 합니다. System.Text.Json은 기본적으로 이를 수행하며, Newtonsoft는 전역 설정으로 수행합니다. - 샘플 하나만으로 생성기를 신뢰하기. 널 허용 여부와 배열 요소 형식은 입력된 데이터로부터 추론됩니다. 널 허용 주석은 항상 실제 API 동작과 대조하여 확인하세요.
자주 묻는 질문
.NET 6 이상의 신규 프로젝트에서는 System.Text.Json을 사용하세요. 더 빠르고 기본 내장되어 있으며, 이제 Newtonsoft의 거의 모든 기능을 지원합니다. 레거시 프로젝트이거나 Newtonsoft 고유 기능(사용자 지정 계약 확인자, JObject, 동적 처리)이 필요한 경우에는 Newtonsoft를 사용하세요.
C# 10 이상에서는 불변 DTO에 레코드가 관용적입니다. 값 동등성과 간결한 구문을 제공합니다. 변경이 필요하거나 레거시 호환성이 필요할 때는 클래스가 더 낫습니다. 이 도구에서는 둘 중 어느 것이든 선택할 수 있습니다.
프로젝트에서 널 허용 참조 형식(C# 8 이상)을 사용하는 경우, 어떤 샘플에서든 null로 관측된 필드는 string?, int? 등이 됩니다. 널 허용 참조 형식을 사용하지 않으면 널 허용 여부는 값 형식(예: int?)에만 표시됩니다.
서로 다른 객체 형태가 섞인 배열은 강력한 형식의 C#에서 직접 표현할 수 없습니다. 이 도구는 공통 기본 클래스를 추론하거나 (대체로) object를 사용합니다. 혼합 배열의 경우 대개 JSON을 다시 설계하는 편이 좋습니다.
관련 도구
ASCII 표 참조
NUL, LF, DEL 같은 제어 문자를 포함해 모든 문자에 대한 10진수, 16진수, 8진수, 2진수, HTML 숫자 문자 참조를 담은 0부터 127까지의 전체 ASCII 표.
HTML 문자 참조
HTML 엔티티의 검색 가능한 목록, 각 엔티티의 이름 및 숫자 코드, 그리고 특수 문자 및 기호에 대한 1클릭 복사 기능을 제공합니다.
키보드 단축키 참고표
macOS, Windows, Linux에서 VS Code, Chrome, GNU Readline을 쓰는 Bash의 문서화된 기본 단축키를 검색합니다.
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
색상 틴트 생성기
기준 색의 밝은 틴트를 생성합니다. 디자인 시스템 토큰, 배경, 호버 상태를 위한 3-20단계 스케일.
이메일 검증기
이메일 주소를 검증합니다. RFC 5322 구문 검사, 실시간 MX 레코드 조회, 그리고 로컬 파트, 도메인, 길이 정보를 제공합니다. 이메일은 전송되지 않습니다.
이 도구는 다른 언어로도 제공됩니다
- Từ JSON đến lớp C# [VI]
- تحويل JSON إلى فئة C# [AR]
- JSON a Clase C# [ES]
- JSON ถึงคลาสใน C# [TH]
- JSON naar C#-klasse [NL]
- JSON vers classe C# [FR]
- JSON na klasę C# [PL]
- JSON ke Kelas C# [ID]
- JSON zu C# Klasse [DE]
- JSON till C#-klass [SV]
- JSONからC#クラスへ [JA]
- JSON para Classe C# [PT]
- JSON в класс C# [RU]
- JSON'ten C# Sınıfına [TR]
- 从 JSON 到 C# 类 [ZH]
- JSON to C# Class [EN]
- JSON in classe C# [IT]