Tool Kumar 도구

JSON을 C# 클래스로 변환

System.Text.Json용 C# 모델을 생성합니다. 기본 출력은 모든 속성에 JsonPropertyName 특성을 붙이고, 모든 샘플 레코드에 있는 필드에는 required를 사용합니다.

도구 사용 방법

  1. 필드 구성이 서로 다른 레코드까지 포함해 대표적인 응답을 붙여넣습니다.
  2. 생성된 출력을 검토하고, 필요하면 ‘루트 이름’을 바꿉니다.
  3. 코드를 복사하거나 다운로드한 뒤, 타입이 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>이 되고, 중첩된 구조마다 클래스가 생성됩니다.

관련 도구

JSON을 Java 레코드로 변환, JSON을 TypeScript로 변환 및 JSON Schema 생성기.