Tool Kumar 도구
JSON을 C# 클래스로 변환
System.Text.Json용 C# 모델을 생성합니다. 기본 출력은 모든 속성에 JsonPropertyName 특성을 붙이고, 모든 샘플 레코드에 있는 필드에는 required를 사용합니다.
도구 사용 방법
- 필드 구성이 서로 다른 레코드까지 포함해 대표적인 응답을 붙여넣습니다.
- 생성된 출력을 검토하고, 필요하면 ‘루트 이름’을 바꿉니다.
- 코드를 복사하거나 다운로드한 뒤, 타입이 API 명세와 맞는지 확인합니다.
사용 예제
내장 변환기가 생성한 출력입니다. 두 항목의 price 값에서는 부동소수점 필드가, null과 문자열인 note 값에서는 null 허용 필드가 추론됩니다.
입력
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}출력
using System.Collections.Generic;
using System.Text.Json.Serialization;
public class Root
{
[JsonPropertyName("user-id")]
public required long UserId { get; set; }
[JsonPropertyName("profile")]
public required Profile Profile { get; set; }
[JsonPropertyName("items")]
public required List<Item> Items { get; set; }
}
public class Profile
{
[JsonPropertyName("city")]
public required string City { get; set; }
[JsonPropertyName("created_at")]
public required string CreatedAt { get; set; }
}
public class Item
{
[JsonPropertyName("price")]
public required double Price { get; set; }
[JsonPropertyName("note")]
public required string? Note { get; set; }
}
System.Text.Json으로 역직렬화하기
클래스를 .NET 프로젝트에 복사하고 nullable 어노테이션을 활성화합니다. JsonPropertyName 특성은 PascalCase 속성을 입력의 정확한 키에 매핑합니다.
.NET 7 이상처럼 System.Text.Json이 required 멤버를 지원하는 .NET 버전을 사용합니다. 직렬화 옵션은 애플리케이션에 맞게 구성합니다.
using System.Text.Json;
Root? model = JsonSerializer.Deserialize<Root>(responseBody);옵션 및 예외 사항
- 기본값은 System.Text.Json입니다. ‘옵션 더보기’에서 Newtonsoft를 선택하면 Newtonsoft.Json JsonProperty 특성과, 알 수 없는 값을 위한 JToken이 생성됩니다.
- 생성된 required 멤버에는 C# 11 이상이 필요합니다. nullable 참조 형식 구문을 사용하려면 nullable 어노테이션이 활성화되어 있어야 합니다.
- 정수는 long, 부호 있는 64비트 범위를 넘는 정수는 decimal, 소수는 double을 사용합니다. decimal도 범위가 유한하므로 더 큰 값에는 별도의 표현 방식을 선택해야 합니다.
- 모든 레코드에 키가 있으면 nullable 필드도 required가 될 수 있습니다. 키가 반드시 있어야 하는 것과 null을 허용하는 것은 별개의 규칙입니다. 날짜는 string으로 남습니다.
개인정보 보호 기본 적용
문서는 이 브라우저에만 보관됩니다. Tool Kumar는 기기 안에서 파싱, 변환, 다운로드 파일 생성을 처리하며 계정이나 업로드 과정이 필요하지 않습니다.
JSON을 C# 클래스로 변환 자주 묻는 질문
- System.Text.Json과 Newtonsoft.Json 중 무엇을 사용하나요?
- 기본값은 JsonPropertyName 특성을 사용하는 System.Text.Json입니다. 변환기의 ‘옵션 더보기’ 메뉴에서 Newtonsoft를 선택하면 대신 Newtonsoft.Json JsonProperty 특성을 출력합니다.
- 출력에는 어떤 C# 버전이 필요한가요?
- required 멤버를 쓰려면 C# 11 이상이 필요합니다. string? 같은 참조 형식 어노테이션을 의도대로 쓰려면 nullable 참조 형식을 활성화합니다.
- required 속성이 nullable일 수도 있는 이유는 무엇인가요?
- 키는 모든 샘플 레코드에 있지만 값은 null일 수 있기 때문입니다. 예를 들어 required string? Note는 키의 존재 여부와 값의 타입을 따로 모델링합니다.
- 리스트와 중첩 클래스도 생성하나요?
- 네. 객체 배열은 List<Item>이 되고, 중첩된 구조마다 클래스가 생성됩니다.