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을 다시 설계하는 편이 좋습니다.
관련 도구
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
Webpack 설정 생성기
순수 JavaScript, React, Vue용 webpack 5 webpack.config.js를 만드세요. TypeScript, Babel, CSS 또는 Sass, 이미지, HtmlWebpackPlugin, 개발 서버, npm install 명령까지 함께 제공합니다.
XML 포매터
일관된 들여쓰기로 XML 문서를 정렬 출력하고, 정확한 줄 번호로 적격성 오류를 잡아냅니다.
텍스트 파일 인코딩 변환기
깨진 문자를 고치기 위해 텍스트를 UTF-8, UTF-16, Latin-1, Windows-1252 등 여러 인코딩 사이에서 변환하세요.
Protocol Buffers 디코더
hex, Base64, Base64URL, 텍스트 또는 파일의 Protobuf 와이어 형식 바이트를 브라우저에서 디코딩하고 정확한 필드 후보를 확인한 뒤 비공개 보고서로 내보냅니다.
색상 혼합기
두 HEX 색상을 2-20개의 균등한 색상 견본으로 섞습니다. 양 끝 색상을 포함해 각 중간 색상을 대문자 HEX 코드로 확인하세요.
이 도구는 다른 언어로도 제공됩니다
- JSON vers classe C# [FR]
- JSON ke Kelas C# [ID]
- JSONからC#クラスへ [JA]
- JSON na klasę C# [PL]
- JSON para Classe C# [PT]
- JSON ถึงคลาสใน C# [TH]
- تحويل JSON إلى فئة C# [AR]
- Từ JSON đến lớp C# [VI]
- JSON naar C#-klasse [NL]
- JSON zu C# Klasse [DE]
- JSON till C#-klass [SV]
- JSON a Clase C# [ES]
- JSON to C# Class [EN]
- JSON in classe C# [IT]
- JSON'ten C# Sınıfına [TR]
- JSON в класс C# [RU]
- 从 JSON 到 C# 类 [ZH]